Swing SwingUtilities.invokeLater wie konsequent anwenden?

Wang

Bekanntes Mitglied
Hallo,

angenommen, man möchte irgendwelche Klassen, die diverse JFrames repräsentieren und über Swing-Komponenten verfügen (u.a. JPanel, JTable, JButton, JRadioButton, ...) die aber nicht sofort, sondern z.B. erst nach einer Stunde sichtbar werden sollen, gleich zu Beginn initialisieren, damit nachher das Öffnen flotter geht.

Muss man auch für das Initialisieren die Methode SwingUtilities.invokeLater verwenden, oder ist das hier nicht nötig?

Thanks!
 
invokeLater bewirkt die Ausführung im EDT und macht nur dann Sinn, wenn du aus einem seperaten "NichtGuiThread" eine Änderung an einer oder an mehreren Guikomponenten vornehmen willst.

Gruß Vanny
 
Du kannst die Komponenten ja erstemal auf setVisible(false) setzen und gleich initialisieren. Das muss nach aber nicht im EDT sein.
 
Alle Änderungen am Zustand einer Swing-Component, die "realized" ist, müssen auf dem EDT gemacht werden.

Das würde eigentlich bedeuten, dass man sie zumindest auf einem beliebigen Thread erzeugen kann, aber das ist NICHT der Fall. ALLES, was mit Swing zu tun hat, sollte auf dem EDT laufen, außer den wenigen Ausnahmen, die in der API-Doku stehen.
 

Neue Themen


Zurück
Oben