invokeLater in der main-Methode

Status
Nicht offen für weitere Antworten.

Leroy42

Top Contributor
Ich habe öfter Konstrukte gesehen wie

Code:
    public static void main(String args[]) { 
        java.awt.EventQueue.invokeLater(new Runnable() { 
            public void run() { 
                new IrgendeinFrame().setVisible(true); 
            } 
        }); 
    }



Ich benutze immer direkt

Code:
    public static void main(String args[]) { 
        new IrgendeinFrame().setVisible(true); 
    }



Hat die erste Variante irgendwelche Vorteile gegenüber der zweiten?
Gibt es Sonderfälle oder ist es immer egal?
 
Leroy42 hat gesagt.:
Ich habe öfter Konstrukte gesehen wie

Code:
    public static void main(String args[]) { 
        java.awt.EventQueue.invokeLater(new Runnable() { 
            public void run() { 
                new IrgendeinFrame().setVisible(true); 
            } 
        }); 
    }

Wer baut den sowas?

Damit wird normalerweiße (also ich nutze das meist so 😉) gewährleistet, dass sich z. B. die GUI der im Hintergrund laufender Berechnung anpasst.

Würde auf jeden fall zur 2. Methode tendieren.
 
invokeLater(...) sollte gebraucht werden wenn ein Anwendungs-Thread die GUI auf den neuesten Stand bringen muss. Das ist hier der Fall.
 
Andre_Uhres hat gesagt.:
invokeLater(...) sollte gebraucht werden wenn ein Anwendungs-Thread die GUI auf den neuesten Stand bringen muss. Das ist hier der Fall.

Bei nem einfachen setVisible? Das musste mir jetzt pls mal erklären. Thx!
 
Code:
 public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new IrgendeinFrame().setVisible(true);
            }
        });
    }
das ist nur Hygiene und (hier) nur beim Programmstart: man will explizit klarmachen, dass der Event-Dispatch-Thread anspringen soll

das tut er zwar automatisch, aber man könnte ganz absurde Beispiele konstruieren (wo die main aus einer anderen Methode heraus aufgerufen wird) wo das in die Hose geht

im Normalfall springt der EDT sowieso einfach an, wenn das erste mal gefernsterlt wird
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben