Erste Schritte png in JFrame anzeigen?

ds030

Mitglied
Hallo in die Runde,
ich habe eine Bitte. Bin eigentlich völliger Einsteiger, versuche mich aber an einem kleinen Programm.
Ich habe ein JFrame angelegt, in welchem sich später Symbole random im Raum bewegen sollen, um dann
"weggeclickt" zu werden. Das ist sozusagen das Endziel. Nun versuche ich aber erstmal, im JFrame überhaupt ein
Symbol angezeigt zu bekommen. Kann mir da vielleicht wer helfen? Wie kann ich ein Symbol (als .png im
src abgelegt) im JFrame anzeigen lassen. Die Position ist erstmal egal, nur die Größe möchte ich gerne anpassen
können. Unten mein bisheriger Code. Die Gui wird natürlich aus der hier nicht aufgeführten main aufgerufen.
Vielen Dank schon mal!

Code:

Java:
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

public class Gui extends JFrame{

    static int screenwidth = 800, screenheight = 600;

    public Gui() {

        JFrame jf1 = new JFrame();
        setSize(screenwidth, screenheight);
        setLocationRelativeTo(null);
        setTitle("VacsCovid");
        setBackground(Color.BLACK);
        setResizable(false);
        setVisible(true);

    }

    private void steuern (){

        addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {

                int action = e.getKeyCode();

                switch (action) {
                    case KeyEvent.VK_RIGHT:
                        break;
                    case KeyEvent.VK_LEFT:
                        break;
                }

            }
        });
    }
}
 
Zuletzt bearbeitet von einem Moderator:
Diese Codebeispiel zeigt wie man eine Komponente erstellen kann, welche ein Bild enthält. Diese Komponente kann man dann auf anderen Komponenten platzieren, JFrame#getContentPane() und Container#add(Component)

Java:
class IconPanel extends JPanel {

    private ImageIcon icon;

    public IconPanel() {
        loadImage();
        initPanel();
    }

    private void loadImage() {
        icon = new ImageIcon("book.png"); // ImageIcon can work with PNG, JPEG, and GIF images
    }
  
    private void initPanel() {
        int w = icon.getIconWidth();
        int h = icon.getIconHeight();
        setPreferredSize(new Dimension(w, h));
    } 

    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        icon.paintIcon(this, g, 0, 0);
    }
}
 
Zuletzt bearbeitet:
Um auf einem JFrame andere Komponenten pixelgenau also absolut zu positionieren geht man folgendermaßen vor:
Java:
import java.awt.Container;
import java.awt.Insets;
import java.awt.Dimension;
import javax.swing.JButton;
import javax.swing.JFrame;
 
public class AbsoluteLayoutDemo {
    public static void addComponentsToPane(Container pane) {
        pane.setLayout(null);
 
        JButton b1 = new JButton("one");
        JButton b2 = new JButton("two");
        JButton b3 = new JButton("three");
 
        pane.add(b1);
        pane.add(b2);
        pane.add(b3);
 
        Insets insets = pane.getInsets();
        Dimension size = b1.getPreferredSize();
        b1.setBounds(25 + insets.left, 5 + insets.top,
                     size.width, size.height);
        size = b2.getPreferredSize();
        b2.setBounds(55 + insets.left, 40 + insets.top,
                     size.width, size.height);
        size = b3.getPreferredSize();
        b3.setBounds(150 + insets.left, 15 + insets.top,
                     size.width + 50, size.height + 20);
    }
 
    /**
     * Create the GUI and show it.  For thread safety,
     * this method should be invoked from the
     * event-dispatching thread.
     */
    private static void createAndShowGUI() {
        //Create and set up the window.
        JFrame frame = new JFrame("AbsoluteLayoutDemo");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
        //Set up the content pane.
        addComponentsToPane(frame.getContentPane());
 
        //Size and display the window.
        Insets insets = frame.getInsets();
        frame.setSize(300 + insets.left + insets.right,
                      125 + insets.top + insets.bottom);
        frame.setVisible(true);
    }
 
    public static void main(String[] args) {
        //Schedule a job for the event-dispatching thread:
        //creating and showing this application's GUI.
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }
}
Der Einfachheit halber verwendet das Beispiel Buttons.
 

Neue Themen


Zurück
Oben