Moin,
nachdem ich mich gestern bereits Stunden erfolglos mit der Problemlösung beschäftigte, hat vielleicht hier jemand eine Idee.
Laut Debugger (Netbeans 5.5) wirft mir diese Zeile eine NullPointerException:
Gemäß Debugger ist weder das logoImage NULL noch das g2d-Objekt noch myLogo. width beträgt 559.
Das logoImage hole ich mir eine Zeile zuvor mittels
Image logoImage = myLogo.getImageFromIcon();
Die weitere Herleitung des Images geschieht in MyLogo extends Canvas so:
Die URL wird korrekt gefüllt, das img3 ebenfalls sowie das myLogo = new MyLogo().
Wo ist der Fehler, mein Denkfehler, was übersehe ich, dass es beim drawImage eine NPE gibt?? Oder verarscht mich der Debugger?
Nachtrag, um die Verwirrung komplett zu machen:
Während aus Netbeans heraus die NPE fliegt und das Drucken direkt fehlschlägt, tritt beim Programmlauf ausserhalb Netbeans die NPE gar nicht auf, es wird gedruckt, aber das Logo fehlt.
Ich geh mal davon aus das du schon nachgesehen hast ob g2d, logoImage und myLogo nicht null sind.
Ich kann dir nicht genau sagen wie du das jetzt machen kannst da ich Netbeans nicht kenn, bei eclipse kann man die src.zip des JDK angeben und dann kannst du auch die Java Methoden debuggen. So kannst du dann direkt in die draw Methode gehen und nachsehen wo da die Exception fliegt, das könnte dir helfen.
So wie es aussieht, gibt es wohl Probleme mit dem gif.
Ich habe es mir angeschaut und es sieht ziemlich kaputt aus. Eine andere gif wurde jedoch auch nicht angezeigt. Ich verwende jetzt eine jpg. Kann es sein, dass es generell Probleme mit gifs gibt?
Ich fürchte nicht. Noch nicht einmal die einfachsten Beispiele von Sun oder auch der an anderer Stelle erfolgreich funktionierende Code will in meinem Testprojekt nicht. Ich flipp hier noch aus, aber nicht mehr heute.
Möglicherweise ist irgendwas im NetBeansprojekt kaputt.
Versuch mal ein ganz neues NetBeansprojekt zu erstellen und deine .java und .form Dateien dorthin zu kopieren
Moin Andre,
sehr interessant, mit einem neuen Projekt funktioniert es tatsächlich. Irgendwas scheint wohl schon mal mit dem Test-Projekt nicht zu stimmen, in dem zugegebenermaßen ein paar mehr Tests und Testklassen enthalten sind.
Danke für den Tipp!
win.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
// Logo setzen
Graphics2D g = (Graphics2D) win.getGraphics();
ImageIcon logo = new ImageIcon("millgabel.jpg");
g.drawImage(logo.getImage(), 5, 5, new DynamicImageObserver());```
```import java.awt.Image;
import java.awt.image.ImageObserver;
public class DynamicImageObserver implements ImageObserver {
public boolean imageUpdate(Image img, int infoflags, int x, int y, int width, int height) {
return true;
}
}```
Was stimmt da nicht? Beim Compilieren zeigt er eine NullPointerException an, obwohl keiner der Parameter gleich NULL ist :(
Stimmt, Denkfehler xD (Ein Kaffee heute Morgen war nicht genug)
In dieser Zeile:
g.drawImage(logo.getImage(), 5, 5, new DynamicImageObserver());
Eclipse gibt folgendes aus:
Exception in thread „main“ java.lang.NullPointerException
at RefreshFileList.initGUI(RefreshFileList.java:158)
at RefreshFileList.main(RefreshFileList.java:283)