Sollten Sie SwingUtilities.invokeLater(Runnable)
verwenden, wenn Sie die GUI ändern und Sie sind in der AWT Event Dispatching Thread, wie ein ActionListener
?SwingUtilities.invokeLater in AWT Ereignis Dispatching Thread
Antwort
Sie müssen im Event Dispatch Thread (EDT) immer GUI-Aktualisierungen vornehmen. Wie jedoch Jeffrey in den Kommentaren hervorhebt, ist die ActionListener.actionPerformed
-Methode für ein Swing-Objekt bereits, das vom EDT aufgerufen wird.
Wenn Sie einfach die JButton
aussehen sollen aktiviert/unenabled oder zum Hinzufügen/Entfernen von Elementen aus einem JList
und Ihre jenen Änderungen über eine ActionListener
auf einer Swing-Komponente zu machen, dann sollten Sie nicht SwingUtilities.invokeLater
explizit aufgerufen haben.
+1, Wenn das OP versuchte, eine 'JTextComponent' zu löschen oder eine' JScrollBar' neu zu positionieren, war 'invokeLater' möglicherweise notwendig. Aber da er nur eine 'JButton' aktiviert/deaktiviert und eine' JList' modifiziert, ist dies nicht der Fall. – Jeffrey
@ Jeffrey Warum wäre es notwendig gewesen, wenn ich das getan hätte? – Stripies
Solange wir in der EDT sind, ist die Verwendung von 'invokeLater' ziemlich nutzlos. Wenn wir etwas zu einem späteren Zeitpunkt ausführen wollen, gelten natürlich die gleichen Einschränkungen wie üblich (d. H. Nur weil wir einen Thread vom EDT starten, hilft uns überhaupt nicht). – Voo
- 1. Ereignis Dispatching Thread-Synchronisation
- 2. Thread kehrt nicht von SwingUtilities.invokeLater zum Hauptthread zurück
- 3. Java Exception in thread "AWT-Eventqueue-0" java.lang.ClassCastException
- 4. Ausnahme im Thread "AWT-EventQueue-0" java.awt.HeadlessException
- 5. Java: Debuggen mit SwingUtilities.invokeLater()
- 6. JavaFx Antwort auf SwingUtilities.invokeLater
- 7. Unterschied zwischen SwingWorker und SwingUtilities.invokeLater
- 8. Ausnahme im Thread "AWT-EventQueue-0" java.lang.NullPointerException Jswing Problem
- 9. Exception in thread "AWT-Eventqueue-0" java.lang.NullPointerException TreeMap
- 10. Exception in thread "AWT-Eventqueue-0" java.lang.NumberFormatException: Für Eingabestring: "null"
- 11. SwingUtilities.invokeLater mit Endlosschleife, nicht weiter?
- 12. FEHLER! Ausnahme im Thread "AWT-EventQueue-0" java.lang.IllegalStateException: Nicht im FX-Anwendungs-Thread; currentThread = AWT-EventQueue-0
- 13. Guava EventBus Dispatching
- 14. Ähnliche Funktion SwingUtilities.invokeLater in Android?
- 15. Dynamisches Methoden-Dispatching in C
- 16. Early Abacus Programmfehler: Ausnahme im Thread "AWT-EventQueue-0" java.lang.NullPointerException
- 17. DrawerLayout - Exception Dispatching Eingangsereignis
- 18. Was verursacht eine NullPointerException im Thread AWT-EventQueue-0
- 19. Java: Ausnahme im Thread "AWT-EventQueue-0" java.lang.NullPointerException?
- 20. Ausnahme im Thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 100
- 21. Android - Key Dispatching Zeitüberschreitung
- 22. Gibt es eine Möglichkeit, zwei oder mehr Ereignis-Versand-Thread (EDT) einzurichten?
- 23. GUI in Java AWT
- 24. Ist der Thread Component.getGraphicsConfiguration sicher?
- 25. Java - Unterschied zwischen Swingworker und SwingUtilities.invokeLater()
- 26. SwingUtilities.invokeLater() warum wird es benötigt?
- 27. AWT-EventQueue-0 exepction
- 28. Warum SwingUtilities.invokeLater in der Hauptmethode verwenden?
- 29. BackgroundWorker abgeschlossenes Ereignis - welcher Thread?
- 30. Android; "Key dispatching timed out ..."
Es hängt davon ab, was Sie erreichen möchten. – Jeffrey
@ Jeffrey Sorry, ich habe die Frage bearbeitet. – Stripies
Es hängt immer noch davon ab, was Sie erreichen möchten. Wenn Sie sich in der 'actionPerformed'-Methode eines' ActionListener' befinden, befinden Sie sich im EDT. Es gibt jedoch einige Fälle, in denen Sie eine Aktion ausführen müssen, nachdem alle anderen Listener das gleiche Ereignis verarbeitet haben. In diesem Fall sollten Sie 'invokeLater' verwenden. Also, was versuchst du eigentlich zu tun? – Jeffrey