Bilder zeichnen, NullPointer Exception

milaschkaa

Mitglied
Hallo,
ich habe mehre Klassen, die jeweis verschiedene Dinge zeichnen soll.

1. Klasse die die Zeichenfunktion der anderen Klassen aufruft.

Java:
public class a
{
ArrayList<c> b = new ArrayList<c>();

public Grahics malen(Graphics g)     //Diese Methode wird von einer paint methode z.B JFrame        //aufgerufen
{
for(int s=0; s<b.size(); s++)
{
g = b.get(s).malen(g);
return g;                                   //Ergebnis wird wieder an die paint methode zurückgegeben.
}

}    
}Ende der Klasse A 


//Neue Datei...Objekte dieser Art sind in der ArrayList .....

public class c extends Component
{
BufferedImage blub... (alles richtig initialisiert und auch nicht null..) 

public Graphics malen(Graphics g)
{
g.drawImage(blub, 0,0, 10,10, this); // this müsste doch gehen, da von Component geerbt. 
return g;
}
}

Das Problem ist, dass ich eine NullPointerException kriege. Das Image ist hunderprozentig nicht null, alles getestet. Ich bin leider bei meinen Eltern, deswegen musste ich meinen Code etwas skizieren, da ich kein Internet an dem PC habe, an dem ich programmiere.

Aber er ist nicht großartig anders.

Könnt ihr mir sagen, wo das Problem liegt?
Vielen Dank.
 
Das kann dir mit diesem Code niemand beantworten. Desweiteren solltest du nie eine paint() Methode überschreiben, sondern public void paintComponent(Graphics g).
 
...Desweiteren solltest du nie eine paint() Methode überschreiben, sondern public void paintComponent(Graphics g).

Das ist so nicht richtig, wie man im BeispielCode sieht, ist es Component, von der geerbt wird und nicht JComponent.
Somit ist das Überschreiben von paint(); schonmal nicht das verkehrteste.

zu deiner NPE, gibts denn einen Stacktrace dazu?

Ich sage mal dein Graphics Objekt is null.(natürlich nur in den Wald geraten)

[EDIT]Und bitte nicht AWT und SWING vermischen, das gibt fast immer watt auf die Augen. :autsch:[/EDIT]
 
Zuletzt bearbeitet von einem Moderator:
Vielen Dank für eure schnellen Antworten. Es stimmt, der Code hätte nicht zur Problemlösung beigetragen, denn ich war auf einer komplett falschen Spur.

Das Problem war folgendes:
Die Klasse c hat von einer Klasse geerbt mit einem Rectangle. (positions)
Allerdings hab ich die Koordinaten immer per Hand eingegeben und das Rectangle vernachlässigt.
In dem hier veröffentlichen Code hatte ich es aus Vereinfachungsgründen auch absolut posititioniert ..(0,0,10,10). In wirklichkeit stand dort aber positions.x, positions.y ....usw.
Und dieses blöde Rectangle war nicht initialisiert und ich zerbrech mir 2 Tage lang den Kopf darüber......;(
Naja....aus Fehlern lernt man.
Schönes Wochenende noch.

P.S
Jup, nächstes mal gibt es ein StackTrace, das hätte eventuell auch schon geholfen....
 

Zurück
Oben