Animiertes Gif anzeigen - NullPointer Exception

0LUMIN4T0R

Mitglied
Hallo zusammen,
ich würde gerne in meinem Frame ein gif anzeigen. Ich weiß dass es zu diesem Thema schon sehr viele Threads gibt, nur leider funktioniert bei mir keine Lösung davon.
Java:
        JLabel imageLabel = new JLabel(); 
//nächste Zeile ist 114
        ImageIcon ii = new ImageIcon(this.getClass().getResource("Matrix_Anfang.gif"));
        imageLabel.setIcon(ii);
frame.getContentPane().add(imageLabel);
Ich bekomme folgende Fehlermeldung:
Code:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at javax.swing.ImageIcon.<init>(Unknown Source)
    at Codex.Menu.run(Menu.java:114)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$500(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

Ich hoffe ihr könnt mir helfen und bedanke mich jetzt schon mal für alle Antworten.
 

Hellosager

Aktives Mitglied
Auf Anhieb fallen mir zwei mögliche Probleme ein.
Naheliegend wäre, dass du den Name des gif falsch geschrieben hast.

Ansonsten schau mal ob das gif überhaupt im src-Ordner liegt.
 

0LUMIN4T0R

Mitglied
Den Namen habe ich gerade nochmal überprüft und im gleichen Ordner wie das gif liegt auch ein png. Dieses wird angezeigt wenn ich den Dateinamen ändere.:confused:
 

thet1983

Top Contributor
Java:
//BufferedImage laden
BufferedImage img = ImageIO.read(Img.class.getClassLoader().getResourceAsStream(path));
 

0LUMIN4T0R

Mitglied
Java:
//BufferedImage laden
BufferedImage img = ImageIO.read(Img.class.getClassLoader().getResourceAsStream(path));

Bei Img meldet eclipse mir einen Fehler. HAbe den Code jetzt folgendermaßen abgeändert
Java:
 BufferedImage img = null;
        try {
//nächste Zeile ist 237
            img = ImageIO.read(Image.class.getClassLoader().getResourceAsStream("Matrix_Anfang.gif"));
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
Und bekomme immer noch eine NullPointerException
Code:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at Codex.Menu.run(Menu.java:237)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$500(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
 

thet1983

Top Contributor
"Fehler" bei mir ist das fehlende try/catch

deine klasse heißt Menu richtig?
Java:
// img = BufferedImage!!
// try
img = ImageIO.read(Menu.class.getClassLoader().getResourceAsStream("packagename/bildname.GIF");
// catch

// img an label uebergeben
JLabel iconLabel = new JLabel(new ImageIcon(img));
// label an panel adden
panel.add(iconLabel);

wo liegt dein bild?
 

0LUMIN4T0R

Mitglied
"Fehler" bei mir ist das fehlende try/catch

deine klasse heißt Menu richtig?
Genau
wo liegt dein bild?
Im Ordner des Packages und im src Ordner
Prüfe die Zeile doch einfach mal im Debugger - da siehst Du dann doch, was genau NULL ist ...
Gruß Klaus
Hätte ich auch selbs drauf kommen können:rolleyes: img ist null

Das ist der aktuelle Code:
Java:
 JLabel gifLabel = new JLabel();
        BufferedImage img = null;
            try {
                img = ImageIO.read(Menu.class.getClassLoader().getResourceAsStream("Matrix_Anfang.gif"));
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        ImageIcon Matrix = new ImageIcon(img);
        gifLabel.setIcon(Matrix);
        gifLabel.setBounds(0, 0, 1440, 1080);
Und nun ein neuer Error
Java:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: input == null!
    at javax.imageio.ImageIO.read(Unknown Source)
    at Codex.Menu.run(Menu.java:237)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$500(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
 

Natac

Bekanntes Mitglied
Bitte mal mit Menu.class.getResourceAsStream("Matrix_Anfang.gif") (Ohne "getClassLoader()") versuchen.

Ich würde auch empfehlen eine statische Methode BufferedImage createGifFrom(String resourceName) in der Klasse Menu anzulegen, die diese Details dann übernimmt.
 

thet1983

Top Contributor
schreib dir einfach eine methode
in etwa so:
Java:
/*
Bilder liegen zB im Package
myproject
  |__ images 
  |__ ....
   also lautet der path: myproject/images/myPic.GIF
*/
public static BufferedImage loadImg(String path){
     img = null;
     try{
       img = ImageIO.read(LoadImg.class.getClassLoader().getResourceAsStream(path));
     }catch(Exception e){
       e.printStackTrace();
     }
     return img;
   }

und das rufst du nun im Konstruktor des Labels auf

Java:
JLabel lbIcon = new JLabel(new ImageIcon(loadImg("myproject/images/myPic.GIF")));
 

0LUMIN4T0R

Mitglied
Jetzt bekomme ich beide Errors
Java:
    public static BufferedImage loadImg(String path){
         img = null;
         try{
//hier bekomme ich die IllegalArgumentException
           img = ImageIO.read(Menu.class.getResourceAsStream(path));
         }catch(Exception e){
           e.printStackTrace();
         }
         return img;
       }
Java:
//Hier die NullpointerException
JLabel gifLabel = new JLabel(new ImageIcon(loadImg("src/Matrix_Anfang.gif")));
 

thet1983

Top Contributor
folgender code funktioniert..
im anhang siehst du die ordner strukt.
Java:
package demoIcon;

import java.awt.BorderLayout;
import java.awt.image.BufferedImage;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class IconDemo {

   private static BufferedImage img;

   /**
    * launch
    * @param args
    */
   public static void main(String[] args) {
     try{
      
       JLabel lb = new JLabel(new ImageIcon(loadImg("demoIcon/search16.png")));
      
       JFrame f = new JFrame("Demo");
       f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       f.getContentPane().add(lb, BorderLayout.CENTER);
       f.pack();
       f.setVisible(true);
      
     }catch(Exception e){
       e.printStackTrace();
     }
   }
  
   /**
    * load a pic
    * @param path
    * @return the pic
    */
   public static BufferedImage loadImg(String path){
     img = null;
     try{
       img = ImageIO.read(IconDemo.class.getClassLoader().getResourceAsStream(path));
     }catch(Exception e){
       e.printStackTrace();
     }
     return img;
   }

}
 

Anhänge

  • iconDemo1.GIF
    iconDemo1.GIF
    4,5 KB · Aufrufe: 35

Natac

Bekanntes Mitglied
Jetzt bekomme ich beide Errors
Java:
    public static BufferedImage loadImg(String path){
         img = null;
         try{
//hier bekomme ich die IllegalArgumentException
           img = ImageIO.read(Menu.class.getResourceAsStream(path));
         }catch(Exception e){
           e.printStackTrace();
         }
         return img;
       }
Java:
//Hier die NullpointerException
JLabel gifLabel = new JLabel(new ImageIcon(loadImg("src/Matrix_Anfang.gif")));
Die Angabe des Pfades AUF JEDEN FALL IMMER ohne "src"! Ich denke das ist schon die ganze Zeit dein Fehler. Denn Wenn das Bild ("Matrix_Anfang.gif") neben der Klasse "IconDemo" liegt, sollte IconDemo.class.getResourcesAsStream("Matrix_Anfang.gif") funktionieren.

Edit: Wirf in der Methode "loadImg" einen Fehler (meinetwegen RuntimeException), wenn das read fehlschlägt:
Java:
catch(Exception e){
  throw new RuntimeException("Failed to load img from "+path,e);
}
Den Fehler auf die Konsole rauszuschreiben und dann null zurückzugeben ist ein absolutes no-go. Entweder es kommt ein Fehler und der wird hochgereicht, oder er kann ignoriert werden weil ein Default-Wert verwendet werden kann. Beides ist bei dir nicht der Fall, deswegen bekommst du auch eine NPE.
Allgemein gilt: Nie null zurückgeben, nur in Ausnahmefällen und meist gibt es auch noch dann einen besseren weg.
 

0LUMIN4T0R

Mitglied
Erstmal entschuldigung das ich euch solange aufgehalten habe. Das Bild lag tatsächlich im falschen Ordner. Jetzt wird das Bild angezeigt (ohne Fehlermeldung). Ees wird jedoch keine animation gezeigt, sondern nur das Anfangsbild.
Java:
public static BufferedImage loadImg(String path){
         img = null;
         try{
           img = ImageIO.read(Menu.class.getClassLoader().getResourceAsStream(path));
         }catch(Exception e){
           throw new RuntimeException("Failed to load png from " + path, e);
         }
         return img;
       }
Code:
JLabel gifLabel = new JLabel(new ImageIcon(loadImg("Codex/Matrix_Anfang.gif")));
        gifLabel.setBounds(0, 0, 690, 388);
pane1.add(gifLabel, new Integer(0));
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
U zweifacher Aufruf animiertes gif Allgemeine Java-Themen 7
kodela StatusBar-Anzeigen auch in Log-Datei ausgeben Allgemeine Java-Themen 3
berserkerdq2 Text über einen Shape anzeigen (Scenebuilder) Allgemeine Java-Themen 1
C Kalender mit Tageswerten anzeigen Allgemeine Java-Themen 23
W Datum anzeigen Allgemeine Java-Themen 10
OnDemand Anzeigen was eine Applikation macht Allgemeine Java-Themen 1
Lukas2904 Swing Anzeigen lassen das das Programm geschlossen wurde Allgemeine Java-Themen 3
Lukas2904 Wie kann man cps (ClicksPerSecond) in einer GUI anzeigen lassen? Allgemeine Java-Themen 4
I if-eingaben nur einmal anzeigen Allgemeine Java-Themen 6
B Long in einen Double umwandeln und im Label anzeigen Allgemeine Java-Themen 7
L Tess4j Umlaute anzeigen Allgemeine Java-Themen 3
N Daten einer JCoTable in JTextArea anzeigen Allgemeine Java-Themen 7
N HTTP Interpretierten Seitenquellcode anzeigen Allgemeine Java-Themen 30
M Java- Bild gewissen Anzahl von Sekunden anzeigen?! Allgemeine Java-Themen 4
M Java (GUI) Code verdoppeln oder anzeige mehrmals anzeigen? Allgemeine Java-Themen 8
E Swing Interaktive Flächen auf der GUI anzeigen lassen Allgemeine Java-Themen 5
P GUI: ArrayList anzeigen funktioniert nicht Allgemeine Java-Themen 5
A Swing Immer aktuelle Mausposition anzeigen lassen Allgemeine Java-Themen 7
O Threads Aktivität anzeigen... Allgemeine Java-Themen 5
P jCheckBox auf der zusammengeknüpften Programmierung anzeigen lassen Allgemeine Java-Themen 3
M Abonnentenzahl, Aufrufe, etc. von einem YouTube-Kanal anzeigen Allgemeine Java-Themen 7
L Verklemmungen Anzeigen Allgemeine Java-Themen 8
H JFileChooser soll NUR Windows-Netzwerkumgebung anzeigen Allgemeine Java-Themen 2
I JTextArea soll nur drei Zeilen anzeigen Allgemeine Java-Themen 1
B Erste Schritte Plugin erkennen und Class Dateien anzeigen lassen Allgemeine Java-Themen 3
T Wie kann ich alle existierenden Java-Klassen anzeigen lassen? Allgemeine Java-Themen 10
S BLOB Image in JSP anzeigen Allgemeine Java-Themen 5
P "virus entschärfen" / cpu-auslastung von javaw.exe anzeigen Allgemeine Java-Themen 9
W JavaDoc Runtime-Exceptions: Wie sinnvoll anzeigen? Allgemeine Java-Themen 14
P Font aus PDF extrahieren -> im Panel anzeigen Allgemeine Java-Themen 3
M CMD-Text anzeigen Allgemeine Java-Themen 10
M Chart per byte[] in JSP anzeigen Allgemeine Java-Themen 4
R Referenzen im Heap anzeigen Allgemeine Java-Themen 3
D Player Objekt - Frame über Server anzeigen lassen. Allgemeine Java-Themen 3
C Zahl im Textarea anzeigen lassen Allgemeine Java-Themen 8
H Grafikfenster beim booten anzeigen Allgemeine Java-Themen 2
Z Socket [Chatprogramm] Nachrichten vom Server anzeigen lassen Allgemeine Java-Themen 6
Z Desktop anzeigen + Screenshot klappt nicht Allgemeine Java-Themen 3
C Verschlüsselte JPEG Datei anzeigen Allgemeine Java-Themen 10
S TextDatei in Panel anzeigen Allgemeine Java-Themen 10
E 2D-Grafik nicht-rechteckige Grafik anzeigen Allgemeine Java-Themen 3
M Anzeigen Blob gespeicherte Datei Allgemeine Java-Themen 6
J System.out im GUI anzeigen Allgemeine Java-Themen 3
D Bilder in JFrame anzeigen Allgemeine Java-Themen 5
P Swing GUI Process anzeigen Allgemeine Java-Themen 10
cedi Eingegebenen Text in der Konsole nicht sichtbar machen oder nur in Sternchen anzeigen Allgemeine Java-Themen 2
K Liste aller implementierenden Klassen einer Oberklasse anzeigen Allgemeine Java-Themen 4
S Graphik anzeigen Allgemeine Java-Themen 9
B Applet .java Datei einlesen, anzeigen Allgemeine Java-Themen 3
destroflyer *.dds-Bild anzeigen Allgemeine Java-Themen 12
S Inhalt einer zip-Datei anzeigen Allgemeine Java-Themen 11
S Probleme beim Anzeigen des Dateiinhalts Allgemeine Java-Themen 6
T Zeit von einem Server/Webseite auslesen und in eigener GUI anzeigen Allgemeine Java-Themen 6
ARadauer JFreeChart: Beschriftung anzeigen Allgemeine Java-Themen 6
Benji0815 Verzeichnis wie im Windows Explorer in einem JTree anzeigen Allgemeine Java-Themen 6
M Java PDF Anzeigen Allgemeine Java-Themen 5
M Arraylist - Inhalte in Textferldern anzeigen, verändern und löschen. Allgemeine Java-Themen 18
A Zeichen beim Eingeben in ein DOS-Fenster nicht anzeigen? Allgemeine Java-Themen 3
H2SO3- txt datei anzeigen Allgemeine Java-Themen 4
A zwei listen vergleichen und unterschiede anzeigen Allgemeine Java-Themen 3
J Ergebnismenge eines SQL-Queries in JTable anzeigen Allgemeine Java-Themen 3
W Windows XP: ProcessBuilder.start: Kommandoshell anzeigen Allgemeine Java-Themen 3
J Process auf Console anzeigen lassen. Allgemeine Java-Themen 5
Y JasperReport - PDF sofort anzeigen Allgemeine Java-Themen 4
G Bilder einer Webcam im JFrame anzeigen Allgemeine Java-Themen 5
A Noch freie Nummern anzeigen lassen Allgemeine Java-Themen 3
G Taskmanager, Leistung anzeigen Allgemeine Java-Themen 61
B Externes Programm starten - Konsolenausgabe anzeigen lassen? Allgemeine Java-Themen 2
J JSP, Link nur bei erfüllter Bedingung anzeigen Allgemeine Java-Themen 6
G Wait_Cursor anzeigen Allgemeine Java-Themen 4
Zed JList Object einfügen und Text anzeigen Allgemeine Java-Themen 3
D Suche Programm, zum anzeigen von Threads und JVM Zustand etc Allgemeine Java-Themen 8
G Ausgeführtes PreparedStatement anzeigen Allgemeine Java-Themen 3
E *.gif anzeigen Allgemeine Java-Themen 2
V Java applets unter ubuntu im Browser anzeigen Allgemeine Java-Themen 9
T Countdown -> Sekunden anzeigen Allgemeine Java-Themen 4
G mehrer grafiken mit delay daziwschen anzeigen Allgemeine Java-Themen 5
D Flackern beim Anzeigen von Daten mit einer JdbTable Allgemeine Java-Themen 3
I Anzeigen der Zeitzone Allgemeine Java-Themen 2
P Fortschrittszustand von gezippten Files anzeigen Allgemeine Java-Themen 6
G Batch-Datei - javac Ausgaben anzeigen Allgemeine Java-Themen 5
T Prozessliste anzeigen? Allgemeine Java-Themen 2
S JPanel zur Laufzeit verbergen bzw. wieder anzeigen lassen Allgemeine Java-Themen 4
T JEditorPane oder JTextPane Applets und Flash anzeigen Allgemeine Java-Themen 7
M Wie kann ich Hexzahl umwandeln und den String anzeigen? Allgemeine Java-Themen 4
G Panel einer Klasse in einer anderen anzeigen Allgemeine Java-Themen 4
P Inhalt einer Mail anzeigen Allgemeine Java-Themen 5
G Inhalt von Servern anzeigen lassen Allgemeine Java-Themen 9
G String farbig anzeigen. WIE? Allgemeine Java-Themen 4
bernd Unterschiede von Ordnerstrukturen in JTextArea anzeigen Allgemeine Java-Themen 4
I Startbild anzeigen während JVM geladen wird Allgemeine Java-Themen 5
G Escape-Sequenzen anzeigen Allgemeine Java-Themen 11
L Windows-Fenster "Arbeitsplatz" anzeigen Allgemeine Java-Themen 13
A Programm in der Taskleiste anzeigen lassen Allgemeine Java-Themen 3
S Word-Dokument in Textarea anzeigen Allgemeine Java-Themen 2
N Kann ich die Nullpointer Exception umgehen Allgemeine Java-Themen 12
D Nullpointer Exception Problem Allgemeine Java-Themen 5
Kirby.exe Nullpointer Exception bei Queue Allgemeine Java-Themen 5
N Compiler-Fehler Warum erhalte ich einen Nullpointer Fehler? Allgemeine Java-Themen 2
M javafx ComboBox- Nullpointer Exception Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben