Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo! Ich habe ein bestimmtes Problem, und zwar versuche ich, ein Bild in einem Frame anzeigen zu lassen. Ich habe eine Klasse mit dem Bild und meine Hauptklasse, wo ich das JFrame habe.
Bild.java:
Java:
package com.sogomn.test;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
public class Bild extends Main {
public Bild() {
ImageIcon bild = new ImageIcon("ente.jpg");
JLabel label = new JLabel(bild);
}
}
Main.java:
Java:
package com.sogomn.test;
import javax.swing.JFrame;
import com.sogomn.test.Bild;
class Main {
public Main() {
Bild bild = new Bild();
JFrame frame = new JFrame("Spiel");
frame.setSize(1280, 720);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.add(label);
}
public static void main(String[] args) {
new Main();
}
}
Nur leider geht das ganze nicht, warscheinlich weil "label" nur in der Klasse Bild existiert.
Bitte nicht über den schlecht geschriebenen Code wundern, ich bin neu mit Java-Programmierung.
Aber du erzeugst nur die Objekte in Bild und kommst später in Main nicht mehr dran. Das kannst du beheben, indem du einen getter für das Label schreibst, der von Main aufgerufen wird.
Ist aber ziemlich schlechter Stil, weil man davon ausgeht das ein JPanel für alles was in ihm passiert, zuständig sein sollte.
Wie immer sollte man Resourcen über den ClassPath laden, damit es auch funzt, wenn es später alles in einer JAR-Datei steckt.
i
Java:
mport java.awt.Component;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Main {
public Main() {
JFrame frame = new JFrame("Spiel");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Bild bild = new Bild();
frame.add(bild.getLabel());
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
new Main();
}
}
class Bild {
private JLabel label;
private ImageIcon bild;
public Bild() {
bild = new ImageIcon(Main.class.getResource("/ente.jpg"));
label = new JLabel(bild);
}
public Component getLabel() {
return label;
}
}