Threads NullPointer: Konstruktor "zu langsam"?

wenig

Neues Mitglied
Hallo,
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
}
). 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.
 

Gucky

Top Contributor
getGraphics() sollte nicht benutzt werden. Du solltest paintComponent überschreiben und dadurch das Graphics Objekt organisieren.

Methoden innerhalb eines Threads werden IMMER nacheinander abgearbeitet. Und wenn es eine Milliearde Verzweigungen gibt, so werden alle der Reihe nach abgearbeitet. Sofern nichts in einen anderen Thread ausgelagert wird.


Debug doch mal und guck nach, was null ist.
 

kaoZ

Top Contributor
Das Graphics Objekt ist zu diesem Zeitpunkt auch noch nicht vollständig initialisiert, problem hatte ich auch mal.

Wenn du kein Spiel Programmierst mach es wie schon von Gucky erwähnt und überschreib paintComponent();

TIP : man leitet nicht / unheimlich selten von JFrame ab , da du die Klasse ( in 90% der Fälle ) nicht um Funktionalität erweiterst, denn diese Stellt nur den Rahmen für deine Anwendung zur verfügung.

Java:
getContentPane().add(jXXXPanel);

ist übrigens der Falsche weg, man sollte Attribute nicht auf indirektem Weg ändern ( hier über einen Getter ), dafür gibts ja Setter :)

warum nicht einfach

Java:
super.setContentPane(deinPanel);

?
 
Zuletzt bearbeitet:

arilou

Bekanntes Mitglied
Ich seh' in Benutzer "wenig"s Vorgehensweise keinen (direkten) Fehler, und auch keinen Grund, warum man nicht (insbesondere nachdem er hübsch und nett im Konstruktor super(); aufgerufen hat) nicht .getGraphics() verwenden sollte.

Aus der Hilfe zu .getGraphics : "This method will return 'null' if this component is currently not displayable."

Es fehlt zwischendrinn ein Aufruf, dass das Fenster sich mal gründlich selbst "durchorganisieren" soll/darf, z.B.
Java:
this.pack();
. (Aus der Hilfe zu .pack(): "If the window and/or its owner are not displayable yet, both of them are made displayable before [...]"

Java:
// Beispiel
import java.awt.Graphics ;
import javax.swing.* ;

public class JFrame_Konstruktor extends JFrame
{
  private static JPanel p ;

  public static void main( String[] args )
  {
    Graphics g ;

    JFrame_Konstruktor wnd = new JFrame_Konstruktor() ;
    g = wnd.getGraphics() ;
    if( g == null )
      System.out.println( "null" ) ;
    else
      System.out.println( "NOT null" ) ;
    // end if
  }

  public JFrame_Konstruktor()
  {
    super() ;
    //
    p = new JPanel() ;
    this.getContentPane().add( p ) ;
    this.pack();
  }
}

Kann man schön das this.pack(); auskommentieren, und hat den "Fehler"...
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
T Nullpointer. :( Allgemeine Java-Themen 31
0 Animiertes Gif anzeigen - NullPointer Exception Allgemeine Java-Themen 19
L Nullpointer Exceptions werden nicht angezeigt Allgemeine Java-Themen 5
I NullPointer während while(){} Allgemeine Java-Themen 4
G Nullpointer trotz vorherigem Nullcheck Allgemeine Java-Themen 2
V Array aus Instanzen, NullPointer Allgemeine Java-Themen 4
E YQL Api Test - NullPointer Allgemeine Java-Themen 9
A Compiler-Fehler Woher kommt der NullPointer? (Collections & Iterator) Allgemeine Java-Themen 7
D Nullpointer abfangen Allgemeine Java-Themen 7
B Nullpointer Exception in Array Allgemeine Java-Themen 15
H NullPointer finde den grund nicht Allgemeine Java-Themen 9
Z NullPointer in einem VO Allgemeine Java-Themen 14
M Nullpointer Exeption bei String Array Allgemeine Java-Themen 9
A NullPointer bei System.getProperty("file.seperator") Allgemeine Java-Themen 4
A NullPointer bei konvertierung von byteArr --> Object Allgemeine Java-Themen 3
medic NullPointer verwirrt mich total. Allgemeine Java-Themen 3
G NullPointer. in einer Datenstruktur Allgemeine Java-Themen 2
H Nullpointer exception, Attribute in Label schreiben? Allgemeine Java-Themen 4
G Nullpointer Exception nach KeyPressed Allgemeine Java-Themen 6
G NullPointer ? wieso? Allgemeine Java-Themen 7
B Parameter Konstruktor plus rechnen Allgemeine Java-Themen 6
M Konstruktor einer Methode Allgemeine Java-Themen 35
M Frage zum Konstruktor Allgemeine Java-Themen 2
B Klassen Objekt erzeugen und Konstruktor aufrufen - Welche Lösung ist besser? Allgemeine Java-Themen 2
D Konstruktor - jedes Objekt einzeln erzeugen - alternative? Allgemeine Java-Themen 8
J Konstruktor in JSP beim Kompilieren nicht gefunden Allgemeine Java-Themen 3
J Inner class + Leer-Konstruktor Allgemeine Java-Themen 1
P Threads Objekt im Konstruktor anders wie im Run()-Block Allgemeine Java-Themen 10
H Beim Konstruktor "this" Allgemeine Java-Themen 4
K Variablen Konstruktor, unendlich viele Allgemeine Java-Themen 3
T Konstruktor löst exception aus Allgemeine Java-Themen 7
C Klassen und Konstruktor Allgemeine Java-Themen 2
L Klassen Konstruktor soll Objekt anderer Klasse erzeugen Allgemeine Java-Themen 2
M Klassen Klasse Dynamisch laden und Konstruktor aufrufen Allgemeine Java-Themen 1
DStrohma In abstrakter Klasse Konstruktor von Instanz implementieren Allgemeine Java-Themen 11
C Reflektions, Benutzer soll Konstruktor auswählen und Parameter übergeben können Allgemeine Java-Themen 5
S OOP this-Referenz als Konstruktor-Übergabe Allgemeine Java-Themen 8
ruutaiokwu NullPointerException auf member, die per konstruktor gesetzt wird (multithread-kontext) Allgemeine Java-Themen 2
ruutaiokwu auf priv. konstruktor von "aussen" zugreifen? Allgemeine Java-Themen 4
A Methoden laufen im Konstruktor, außerhalb allerdings nicht Allgemeine Java-Themen 2
E Array im Konstruktor übergeben Allgemeine Java-Themen 3
A Reflection Konstruktor Parameter Supertyp Allgemeine Java-Themen 2
X Dynamisch Konstruktor aufrufen Allgemeine Java-Themen 12
J abstrakte Klassen, Konstanten und Konstruktor Allgemeine Java-Themen 9
E Finale Attribute und Konstruktor Allgemeine Java-Themen 3
S Konstruktor ermitteln Allgemeine Java-Themen 3
B Konstruktor wird nicht aufgerufen Allgemeine Java-Themen 4
T class.newinstance + try/catch-konstruktor Allgemeine Java-Themen 6
S Neue Instanz eines Objekts erzeugen - Konstruktor erhaelt Parameter. Allgemeine Java-Themen 5
B Konstruktor - Vererbungsproblem Allgemeine Java-Themen 2
S konstruktor vererben Allgemeine Java-Themen 5
B Problem mit Methodenaufruf in Konstruktor Allgemeine Java-Themen 6
D [SOLVED] Collection wird nicht richtig per Konstruktor übernommen Allgemeine Java-Themen 8
S Instanz in einer Klasse erstellen, und dem Konstruktor die eigene Klasse mitgeben Allgemeine Java-Themen 4
M Konstruktor / statischer Block Allgemeine Java-Themen 13
Ark Konstruktor per Reflection nicht bekannt Allgemeine Java-Themen 4
J Klasse auf Konstruktor oder Methode testen? Allgemeine Java-Themen 3
Junktyz Konstruktor Allgemeine Java-Themen 9
T Schleife im Konstruktor? Allgemeine Java-Themen 9
conan2 super-super-Konstruktor? Allgemeine Java-Themen 3
P static-Methode aus dem Konstruktor aufrufen Allgemeine Java-Themen 6
F Werte von Member-Variablen erst im Konstruktor setzen? Allgemeine Java-Themen 7
MQue zaehlen im Konstruktor Allgemeine Java-Themen 3
V Initialisierung nur im Konstruktor? Allgemeine Java-Themen 14
J Konstruktor-Aufruf nur aus einem bestimmten Package erlauben Allgemeine Java-Themen 5
T Konstruktor von Hashtable unter Java 5.0! Allgemeine Java-Themen 3
M Feld initialisieren, direkt oder Konstruktor Allgemeine Java-Themen 2
D super-Konstruktor ist nicht super ;) Allgemeine Java-Themen 6
A Objektmethode aus Konstruktor aufrufen? Allgemeine Java-Themen 14
7 Konstruktor Allgemeine Java-Themen 12
M Konstruktor, der Excpetions wirft Allgemeine Java-Themen 2
H Super-Konstruktor Allgemeine Java-Themen 7
A Exception in Konstruktor - trotzdem wird Objekt erzeugt! Allgemeine Java-Themen 3
S Konstruktor vererben Allgemeine Java-Themen 9
thE_29 String Konstruktor - Umwandlungsprobleme Allgemeine Java-Themen 5
J Probleme mit dem Konstruktor Allgemeine Java-Themen 8
G Konstruktor-Aufruf nun mit oder ohne Typ? Allgemeine Java-Themen 9
D Kein public Konstruktor Allgemeine Java-Themen 4
K Exception im Konstruktor / Objekt == null Allgemeine Java-Themen 7
S konstruktor nur innerhalb der klasse aufrufbar Allgemeine Java-Themen 5
S konstruktor im interface Allgemeine Java-Themen 5
R JDK installieren OpenJDK-Aufruf sehr langsam Allgemeine Java-Themen 4
K Arbeitsspeicher wird langsam voll Allgemeine Java-Themen 6
E JavaFX RMI extrem langsam wenn Server nicht läuft Allgemeine Java-Themen 5
Thallius String erzeugen sehr langsam Allgemeine Java-Themen 16
S JNLP startet seit 1.8.0_31 sehr langsam + Windows-Systemverzeichnis Allgemeine Java-Themen 3
P Eclipse langsam/unbrauchbar bei größeren Quelldateien? Allgemeine Java-Themen 8
M Externe Jar sehr langsam Allgemeine Java-Themen 23
C JEditorPane langsam großes HTML Allgemeine Java-Themen 8
J Laden von JAR Files geht ohne ADMIN Rechte sehr langsam Allgemeine Java-Themen 6
H Kopieren sehr langsam Allgemeine Java-Themen 5
B Cipher.getInstance Aufruf sehr langsam Allgemeine Java-Themen 2
B util.Timer zu langsam? Allgemeine Java-Themen 3
W Java Applet läuft langsam Allgemeine Java-Themen 2
N Liste mit Map abgleichen extrem langsam Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben