JFrame-Objekt in neuer Methode nicht verfügbar?

  • Themenstarter Themenstarter Nailix
  • Beginndatum Beginndatum
N

Nailix

Gast
Hallo,

ich bin am verzweifeln mit dem javax.swing...

Ich erzeuge in einer Klasse ZEICHENFENSTER einen JFrame. Sieht folgendermaßen aus:

import javax.swing.*;

Java:
public class ZEICHENFENSTER{

JFrame fenster;

  public ZEICHENFENSTER{
    JFrame fenster = new JFrame("Zeichenfenster");
    fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    fenster.setSize(500,500);
  }

  public void malen(){
    fenster.add(new KREIS());
    fenster.setVisible(true);
  }

}

(KREIS extends JPANEL)

Wenn ich die Methode "malen" direkt in den Konstruktor mit reinpacke, funktioniert es und ein schöner Kreis wird auf dem JFrame angezeigt.
So wie es jetzt oben steht, bekomme ich aber eine Nullpointer-Exception. Er kennt dort "fenster" nicht mehr...

Ich denke das hat nichts mit Swing an und für sich zu tun, mir fehlt scheinbar einfach der Einblick in was grundsätzlich Allgemeines.

Wer kann mir hier kurz einen Tip geben?
Danke!
 
Du deklarierst im Konstruktor eine lokale Variable fenster, die die Instanzvariable überdeckt. Lass das JFrame am Anfang der ersten Konstruktorzeile weg, dann passts.
 
[JAVA=6]fenster = new JFrame("Zeichenfenster");[/code]

In Zeile 6 muss das JFrame weg, weil du das ja schon oben deklariert hast. Und du solltest deine Klasse nicht komplett aus Grossbuchstaben schreiben, sondern nur der Anfangsbuchstabe gross. Nur mit Grossbuchstaben werden Konstanten bezeichnet.
 

Neue Themen


Zurück
Oben