SwingWorker
für die folgenden Zwecke verwendet wird:Java - Unterschied zwischen Swingworker und SwingUtilities.invokeLater()
- Für in einem anderen Thread lang laufende Aufgaben ausgeführt, um die GUI aus nicht reagiert
- zu verhindern, Zum Aktualisieren der GUI mit den Ergebnissen, die von der lang andauernden Aufgabe am Ende der Aufgabe über die Methode
done()
erzeugt wurden. - Für die Aktualisierung der GUI von Zeit zu Zeit mit den Zwischenergebnisse produziert und veröffentlicht von der Aufgabe mit Hilfe von
publish()
undprocess()
Methoden.
SwingUtilities.invokeLater()
können die oben genannten Aufgaben erfüllen, wie folgt:
- Statt
SwingWorker.execute()
Methode aus der EDT des Ausführens wirExecutorService.submit(new MyRunnable())
ausführen kann, da es auch einen anderen Thread erzeugen, die lang laufende Aufgabe ausführen kann. - Für die Aktualisierung der GUI am Ende der Aufgabe können wir den Code (geschrieben in
done()
Methode von case1)SwingUtilites.invokeLater(new RunnableToExecuteDoneMethodCode())
am Ende der Aufgabe setzen. - Für die Aktualisierung der GUI in der Mitte der Aufgabe, können wir Code (geschrieben in
process()
Methode von case1)SwingUtilites.invokeLater(new RunnableToExecuteProcessMethodCode())
an der Stelle, wo wirpublish()
Methode in case1 aufgerufen.
ich diese Frage bin zu fragen, weil das Problem in Frage angegeben Java - SwingWorker - Can we call one SwingWorker from other SwingWorker instead of EDT von SwingUtilities.invokeLater()
gelöst werden kann, aber nicht mit SwingWorker
Ich bin nicht ganz sicher, was die 'Frage' ist. – akf
@akf wenn Sie nicht sicher sind, dann lassen Sie es. Simple :) –
Das Problem, auf das Sie verweisen, ist mit SwingWorker lösbar. Siehe meine Antwort dort. –