Hallo,
ich habe den Konstruktor eines swing.JFrames aufgerufen, das wiederum ein JPanel enthält (und selbst dessen Konstruktor in seinem eigenen Konstruktor aufruft:
). Nun versuche ich aus der Klasse, die das JFrame startet, unmittelbar nach dem Konstruktor die Methode getGraphics() des JPanels aufzurufen. Hier bekomme ich aber eine NullPointerException (wahrscheinlich, weil es entweder das ganze Panel oder dessen Graphics-Objekt noch nicht gibt). Ich denke, der Konstruktor verwendet eigene Threads und deshalb wird das Panel bzw. das Graphics-Objekt erst "zu spät" erzeugt, also erst nachdem ich das getGraphics() aufgerufen habe.
Wie sage ich meinem Programm, dass es mit dem Aufrufen weiterer Methoden warten soll, bis alle Konstruktoren fertig sind? Und das Problem ist sicher übertragbar: wie lasse ich das Programm warten, bis z.B. eine paint()-Methode fertig ist, deren Threads ich nicht selbst erzeuge und auf die ich daher mit meinen Mitteln keinen Einfluss nehmen kann?
(Eigentlich brauche ich diese Threads hier ja nicht, damit alles nacheinander passiert, kann sie aber nicht entfernen, da sie in irgendeiner importierten Klasse stehen. Sie zu entfernen, wäre auch nicht sinnvoll.)
Ich hoffe, das Problem ist verständlich dargestellt.
ich habe den Konstruktor eines swing.JFrames aufgerufen, das wiederum ein JPanel enthält (und selbst dessen Konstruktor in seinem eigenen Konstruktor aufruft:
Java:
public XXXFrame() {
super();
jXXXPanel = new JPanel();
getContentPane().add(jXXXPanel);
// gekürzt
}
Wie sage ich meinem Programm, dass es mit dem Aufrufen weiterer Methoden warten soll, bis alle Konstruktoren fertig sind? Und das Problem ist sicher übertragbar: wie lasse ich das Programm warten, bis z.B. eine paint()-Methode fertig ist, deren Threads ich nicht selbst erzeuge und auf die ich daher mit meinen Mitteln keinen Einfluss nehmen kann?
(Eigentlich brauche ich diese Threads hier ja nicht, damit alles nacheinander passiert, kann sie aber nicht entfernen, da sie in irgendeiner importierten Klasse stehen. Sie zu entfernen, wäre auch nicht sinnvoll.)
Ich hoffe, das Problem ist verständlich dargestellt.