Klassenobjekte in paintComponent()/ paint() leer

Status
Nicht offen für weitere Antworten.

Thovan

Mitglied
Hallo,

ich habe heute ein Mysterium entdeckt:

Ein derartiger Quellcode:

Code:
public class MeineKlasse {
   private Vector v;
   private int hundred;

   public MeineKlasse( Vector vec, int h ) {
      v= vec;
      hundred= h;
  
      System.out.println(vec.size());
      System.out.println(hundred);
      System.out.println();
      repaint();
   }
 
   protected void paintComponent( Graphics g ) {
      System.out.println(vec.size());
      System.out.println(hundred);
      System.out.println();
   }
}

führt bei mir bei Instanzierung mit MeineKlasse k= new MeineKlasse( Vect, 100 );

in etwa zu dieser Ausgabe:

1516
100
0
100
0
100

Wieso ist der Vector aus paintComponent() wieder leer?
Auch ein Zugriff über this.v blieb erfolglos.
Dasselbe passiert mir mit einem ResultSet oder eines Arrays statt des Vectors - warum?

Für rasche Antworten bin ich sehr sehr dankbar, da ich das ganze heute noch hinkriegen muss!!!
 
Dein Code compiliert gar nicht...

Aber falls du den Vector, den du dem Kontruktor von MeinKlasse übergeben hast, irgendwo leehrst, dann wird auch der Vector in MeineKlasse leer (denn es sind dieselben Vektoren, nur mit anderen Namen).
 
Beni hat gesagt.:
Dein Code compiliert gar nicht...

Das kann sein, ich habe den ursprünglichen Code auch nur gekürzt (zum besseren Verständnis!)

Beni hat gesagt.:
Aber falls du den Vector, den du dem Kontruktor von MeinKlasse übergeben hast, irgendwo leehrst, dann wird auch der Vector in MeineKlasse leer (denn es sind dieselben Vektoren, nur mit anderen Namen).

Das der Vector nur ein Zeiger ist, ist mir klar, aber was ich nicht verstehe ist, dass ich aus jeder anderen Methode ausser paint() oder paintComponent() drauf zugreifen kann, nur in diesen beiden nicht.

Selbst wenn ich im Konstruktor das Object (Vektor, ResultSet, Rectangle-Array) als Klassenobjekt deklariere, ist es in paint() und paintComponent() null.
:?: :?: :?:
 
Sorry - kleiner Tippfehler.

Korrekt sollte natürlich vec.size() ausgegeben werden,
was aber nichts daran ändert, dass es nicht geht :cry:

Code:
public class MeineKlasse {
   private Vector v;
   private int hundred;

   public MeineKlasse( Vector vec, int h ) {
      v= vec;
      hundred= h;
  
      System.out.println(v.size());
      System.out.println(hundred);
      System.out.println();
      repaint();
   }
 
   protected void paintComponent( Graphics g ) {
      System.out.println(v.size());
      System.out.println(hundred);
      System.out.println();
   }
}
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben