ersetzen
label.setIcon(new ImageIcon("Green.png"));
von
label.setIcon(new ImageIcon(YourMainClassName.class.getResource("Green.png")));
Dieser Code Bild relativ zu laden versucht, Sie projizieren, statt Verzeichnis, können Sie es aus ausgeführt werden. Weitere Informationen finden Sie im Abschnitt How to Use Icons im Java-Lernprogramm.
Dieser Code wird noch besser, wenn die folgende Update, das angewandt wird:
JFrame frame = new JFrame("Frame title");
frame.getContentPane().setLayout(new GridLayout(2, 3));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Moved below
// frame.pack();
// frame.setVisible(true);
JLabel label = new JLabel();
label.setIcon(new ImageIcon(YourMainClassName.class.getResource("Green.png")));
// Added items go to content pane directly
frame.getContentPane().add(label);
frame.getContentPane().add(new JButton("SPIN"));
// Moved from above
frame.pack();
frame.setVisible(true);
Beachten Sie, dass JFrame
wenn keine Inhalte enthalten pack
im ursprünglichen Code aufgerufen wird, so wird es versuchen, Fenstergröße zu minimieren und setVisible
zeigt zuerst leeren Rahmen. Danach, wenn jede Komponente hinzugefügt wird, muss der Frame neu verteilt werden.
Modifizierter Code behebt beide Probleme: pack
passt die Fenstergröße an den tatsächlichen Inhalt an und es wird nur ein Layout-Durchlauf benötigt.
Die zweite Änderung ist, wie Komponenten zum Rahmen hinzugefügt werden. Es ist besser, sie dem Inhaltsfenster von Frames hinzuzufügen, anstatt sie direkt zum Frame hinzuzufügen. Sie können weitere Informationen darüber in Using Top-Level Containers Abschnitt von Java Tutorial finden.
Danke für Hilfe! Es klappt! –