Alle Anstriche der Komponenten sollten in einem einzigen Thread ausgeführt werden, so dass sie richtig gerendert werden. So weiß die Komponente, welcher Teil bereits gemalt wurde und welcher nicht.
Wenn Sie eine "painting" -bezogene Methode (paint, update, paintComponent, show, setVisible, pack usw.) außerhalb des EDT aufrufen, versuchen Sie, in zwei verschiedenen Threads zu malen, was zu Problemen führen kann.
Wenn Sie die Benutzeroberfläche mit einem anderen Thread aktualisieren müssen, sollten Sie sie mit der Funktion invokeLater aufrufen, die sie wiederum in den EDT einfügt, sodass Sie immer noch im selben Thread malen.
Sie brauchen nicht, es zu benutzen, wenn Sie in einem Verfahren sind Codierung, die bereits im EDT läuft (zB actionPerformed
oder paint
oder einer von denen) Oder wenn Sie Ausführung von Code UI nicht verwandt (für Beispiel der Verarbeitung von Dateien im Hintergrund etc.)
um besser zu verstehen, all diese Konzepte lesen: The single thread rule
Eigentlich ist diese Methode genau für den Entwickler ** nicht ** um Thread Synchronisation zu kümmern, für Sie Swing einfach wissen, es ist an der Zeit zu aktualisieren, und die schwere Arbeit wird hinter Szenen durchgeführt. – OscarRyz