Awt-Komponenten 'invalid'

Hallo,

ich habe ein Problem mit awt. Im Programmverlauf sollen häufig neue Komponenten auf ein Panel gesetzt werden, das ganze wird mit CardLayout angezeigt.
Nun tritt aber das Problem auf, dass manchmal die Anzeige nicht stimmt, d.h. es wird etwas nicht angezeigt, das eigentlich da sein sollte… Durch Testausgaben (toString) konnte ich zumindest schonmal herausfinden, dass diese Komponenten „invalid“ sind. Wie bringe ich sie dazu, „valid“ zu werden? :wink:

Grüße,
Nina

…und der Programmcode dazu ?

(diese Frage dient nur dem besseren Verständnis, immerhin kann ein ‚setVisible‘-Befehl vergessen worden sein)

HTH
mfg M.L.

Hallo!

Den Quellcode habe ich leider bis Anfang nächster Woche nicht griffbereit und er ist auch ziemlich umfangreich, aber ich kann das ganze noch ein bisschen näher erläutern. Auf einem Panel (ich nenne das jetzt mal „Hauptpanel“) befindet sich u.a. ein Auswahlmenü (java.awt.Choice). Je nachdem welcher Punkt ausgewählt wird, soll der Inhalt eines Panels, das sich ebenfalls auf dem „Hauptpanel“ befindet, zusammengesetzt werden. Nachdem das geschehen ist, soll das Hauptpanel samt neuem Inhalt neu angezeigt (oder irgendwie aktualisiert) werden, das geschieht normalerweise über cardlayout.show(panel,„name“).
Merkwürdig daran ist: Wenn ich das ganze EINMAL probiere, funktioniert es, und die betreffenden Komponenten sind „valid“. Beim zweiten Mal geht es aber nicht mehr, die Komponenten sind „invalid“ und werden nicht angezeigt. IsVisible() hab ich schon geprüft, daran liegt es nicht…

Grüße,
Nina

Hallo.

ich habe ein Problem mit awt. Im Programmverlauf sollen häufig
neue Komponenten auf ein Panel gesetzt werden, das ganze wird
mit CardLayout angezeigt.
Nun tritt aber das Problem auf, dass manchmal die Anzeige
nicht stimmt, d.h. es wird etwas nicht angezeigt, das
eigentlich da sein sollte… Durch Testausgaben (toString)
konnte ich zumindest schonmal herausfinden, dass diese
Komponenten „invalid“ sind. Wie bringe ich sie dazu, „valid“
zu werden? :wink:

Versuch mal, „validate()“ für den Container (also das Panel) aufzurufen, in dem die Komponenten enthalten sind. Eventuell dann noch ein „repaint()“ hinterher, dann sollte es eigentlich klappen.

Sebastian.

mea culpa…
Es war ein Fehler in der Logik, den ich nun endlich gefunden habe. Trotzdem vielen Dank!

Nina