von meine Fehlermeldung könnt ihr sicher mehr anfangen
public class MyFrame extends JFrame{
public static void main(String[] args) throws IOException {
new MyFrame();
}
public MyFrame() throws IOException {
setPreferredSize(new Dimension(400, 200));
setLocation(200, 200);
setTitle("Hallo Welt");
//Image image = Toolkit.getDefaultToolkit().getImage("java.gif");
Image image = ImageIO.read(new File("java.gif"));
setIconImage(image);
setState(JFrame.NORMAL);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setVisible(true);
}
}
Exception in thread „main“ javax.imageio.IIOException: Can’t read input file!
at javax.imageio.ImageIO.read(ImageIO.java:1275)
at swingtutorial.MyFrame.(MyFrame.java:32)
at swingtutorial.MyFrame.main(MyFrame.java:20)
Diese Fehlermeldung wird geworfen, wenn ImageIO die angegebene Datei nicht lesen kann. Sehr wahrscheinlich gibt es im Verzeichnis, in dem auch deine Klasse MyFrame.class gespeichert ist, keine Datei namens java.gif.
Wo genau liegt denn deine Grafikdatei und wo deine Klasse?
*** Edit ***
Wenn die Grafik Teil des Programms sein/werden soll, empfiehlt es sich, diese in ein Verzeichnis unterhalb deiner Klasse zu speichern und alles komplett in einer Jar-Datei zu speichern.
Dann kannst du mit getClass().getResource(…) arbeiten. Siehe Link oben.
danke für eure hilfe und geduld. Extrem nett von L-ectron-X und euch allen. Blöderweise mache ich fortschritte sehr langsam . ich dachte wenn das bild und code in gleichem Verzeichnis ist, braucht man keine pfadangabe
Es geht nur darum, wo sich das Bild zur Laufzeit des Programmes befindet. Es muss für die Class-Datei, also dein eigentlich ausgeführter Code, zu finden sein.
Das Bild muss also in deinem Fall zur Laufzeit im Verzeichnis deiner Class-Datei liegen. Was im Verzeichnis deiner Quellcode-Datei an Grafikdateien liegt, ist erstmal zweitrangig.
Sieh also mal nach, was im Verzeichnis deiner Class-Datei liegt. Kein Bild? Dann kopiere es mal dort hinein und starte dein Programm.
Aber wie schon oben gesagt: die File-Objekt-Lösung ist für diesen Fall nicht unbedingt geeignet.