awt-Komponenten 'invalid'

Von: , Frage gestellt am Fr, 6. Aug 2004

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? ;-)

Grüße,
Nina

4 Antworten zu dieser Frage

  1. Antwort von nach 17 Minuten 0 hilfreich
    Re: awt-Komponenten 'invalid'

    ...und der Programmcode dazu ?

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

    HTH
    mfg M.L.

    • Antwort von nach 6 Stunden 0 hilfreich
      Re^2: awt-Komponenten 'invalid'

      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

  2. Antwort von nach 2 Tagen 0 hilfreich
    Re: 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? ;-)
    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.

  3. Antwort von nach 4 Tagen 0 hilfreich
    mea culpa...

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

    Nina

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!