Hallo zusammen,
ich hätte eine Frage zu Swing und Threads. Und zwar wundere ich mich, ob es wirklich optimal ist z.B. ein neues Fenster einfach in der Event Queue zu schedulen.
Wenn ich einen Dialog bauen will mache ich das derzeit zum Beispiel so:
Nun frage ich mich was z.B. gegen diese Lösung spricht:
Das Ergebniss wäre doch eigentlich das gleiche und auch sicher wenn der Konstruktor nicht selbst setVisible aufruft. Oder etwa nicht? Die Komponenten wären damit noch nicht realisiert, allerdings wäre die EventQueue in der Zwischenzeit frei, sofern es etwas länger dauern sollte, bis der Dialog geladen ist würde die GUI also nicht einfrieren.
Oder wäre es besser alle Dialoge schon bei Programmstart zu laden und sie dann nur noch auf visible zu setzen? Ich habe nicht die Erfahrung um mir hier ein Urteil zu bilden, darum dachte ich, ich frage einmal nach. Danke und viele Grüße! Rafael
ich hätte eine Frage zu Swing und Threads. Und zwar wundere ich mich, ob es wirklich optimal ist z.B. ein neues Fenster einfach in der Event Queue zu schedulen.
Wenn ich einen Dialog bauen will mache ich das derzeit zum Beispiel so:
Java:
...
SwingUtitlities.invokeLater(new Runnable() {
@Override public void run() {
new MyJDialog().setVisible(true);
}});
...
Nun frage ich mich was z.B. gegen diese Lösung spricht:
Java:
...
SwingUtitlities.invokeLater(new SwingWorker<MyJDialog,Void>() {
@Override public MyJDialog doInBackground() throws Exception {
return new MyJDialog();
}
@Override done() {
try { get().setVisible(true); } catch(Exception ignore) { }
}});
...
Das Ergebniss wäre doch eigentlich das gleiche und auch sicher wenn der Konstruktor nicht selbst setVisible aufruft. Oder etwa nicht? Die Komponenten wären damit noch nicht realisiert, allerdings wäre die EventQueue in der Zwischenzeit frei, sofern es etwas länger dauern sollte, bis der Dialog geladen ist würde die GUI also nicht einfrieren.
Oder wäre es besser alle Dialoge schon bei Programmstart zu laden und sie dann nur noch auf visible zu setzen? Ich habe nicht die Erfahrung um mir hier ein Urteil zu bilden, darum dachte ich, ich frage einmal nach. Danke und viele Grüße! Rafael