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.
Ich versuche gerade eine kleine Simulation zu Programmieren. Dabei habe ich der einfachheit halber am Anfang nur g.fillRect genutzt. Jetzt Funktioniert alles so wie ich will, und deshalb möchte ich die Kästchen zu kleinen Bildchen machen. Mein Problem ist, in manchen Klassen funktioniert es, und in einer anderen Klasse nicht. Deshalb muss es ja möglich sein auf das Bild zuzugreifen. Je nach der Art wie ich darauf zugreife bekomme ich eine NPE oder Can't read Input File Ich benutze übrigend Eclipse.
Hier bekomme ich eine NullPointerException, in der Zeile in der ich in meiner Main die Rendermethode dieser Klasse aurufe:
Mit dem bekomme ich eine javax.imageio.IIOException: Can't read input file!
at javax.imageio.ImageIO.read(Unknown Source)
Exception, in der Zeile mit dem this.Sprite = ImageIO.read(file);
Code:
public class Menu{
public BufferedImage Sprite;
public BuyMenu() {
File file = new File("Fahrgeschaefte.png");
try {
this.Sprite = ImageIO.read(file);
} catch (IOException ex) {
ex.printStackTrace();
}
}
public void render(Graphics g){
g.drawImage(Sprite, 625, 125, 675, 175, 0, 0, 32, 32, null);
}
Wie schon erwähnt funktioniert die erste Variante in einer anderen Klasse. Einziger Unterschied ist, dass die Methode LoadImage() in einer Superklasse ist und nicht in der gleichen. Das sollte aber theoretisch ja nichts ändern.
eingefügt. Bei beidem komme ich auf das gleiche Ergebniss, da ich alles im gleichen Package habe. Wenn ich nur this.getClass() ausgeben lasse komme ich auch auf das gleiche Ergebniss
(file:/C:/Users/Thoralf/neuerWorkspace/IdeeV2/bin/thoralf/game/Fahrgeschaefte.png)
nur mit anderer Klasse am Ende, was ja auch logisch ist. Trotzdem wird kein Bild angezeigt
Sorry, das war von mir Schwammig ausgedrückt. Ich bekam in der Zeile in der ich die render Methode aufrufe eine Fehlermeldung.
Das ist jetzt aber vollkommen egal, weil ich die Lösung gefunden habe
Das problem war, dass das Programm nicht alle Konstrucktoren abarbeiten konnte, bis die RenderMethode das erste mal ausgeführt wurde. Dadurch besaßen manche Bilder noch den Wert null und konnten nicht gezeichnt werden.
Ich habe jetzt gesagt, du machst erst nach der Zeit xyz die Rendermethoden, und jetzt funktioniert es