Netbeans & Bilder laden ... wie?



  • Kann mir mal jemand verraten wie ich Netbeans dazu überreden kann die Bilder, die ich in meinen Klassen laden will, zu finden?

    Zum laden der Bilder verwende ich folgende Codezeilen:

    public class Demonstration {
        public static void main(String[] args) {
            JFrame Fenster = new JFrame("Demonstration");
            BufferedImage Textur = null;
    
            try {
                //Textur = Fenster.getToolkit().getImage("hintergrund.jpg");    
                Textur = ImageIO.read(new File(".\\hintergrund.jpg"));
    
                MediaTracker MT = new MediaTracker(Fenster);
                MT.addImage(Textur,0);
                MT.waitForAll();
            }
            catch (InterruptedException e) {}
            catch (IOException e) {
                e.printStackTrace();
                System.exit(0);
            }
    

    Zur Lauzeit bekomme ich folgende Exception:

    javax.imageio.IIOException: Can't read input file!
    at javax.imageio.ImageIO.read(ImageIO.java:1263)
    at Demonstration.main(Demonstration.java:28)

    Auf gut Deutsch er kann die Datei nicht finden.
    Das Bild befindet sich im selben Verzeichniss wie die .java .class Dateien.

    Wenn ich die Klasse direkt mit dem Java-Interpreter ausführe klappt alles so wie es soll.

    Zurzeit verwende ich Version 3.6 von Netbeans.


  • Mod

    1. Wenn du mit dem ImageIO-Framework ein Bild lädst, dann ist der Ladevorgang schon synchronisiert. Du brauchst dann keinen MediaTracker. Den kannst du also restlos entfernen.

    2. Hol dir die URL des Bildes mittels der Methoden getResource oder getSystemResource der Klasse ClassLoader und lade das Bild mit dieser URL.



  • Danke mit der Methode getSystemResource() hat es funktioniert.

    Der Mediatracker existiert auch nur, weil ich das Bild ursprünglich mit dem Toolkit geladen hatte. Und ich wollte nur kurz testen ob der Fehler auch mit den anderen Methoden auftritt.


Anmelden zum Antworten