Java - Diferença entre SwingWorker e SwingUtilities.invokeLater ()
SwingWorker
é usado para os seguintes fins:
done()
método.Para atualizar a GUI de tempos em tempos com os resultados intermediários produzidos e publicados pela tarefa com a ajuda depublish()
eprocess()
métodos.SwingUtilities.invokeLater()
pode executar as tarefas acima da seguinte maneira:
SwingWorker.execute()
método do EDT, podemos executarExecutorService.submit(new MyRunnable())
como também criará outro encadeamento que pode executar tarefas de longa execução.Para atualizar a GUI no final da tarefa, podemos colocar o código (escrito emdone()
método de case1)SwingUtilites.invokeLater(new RunnableToExecuteDoneMethodCode())
no final da tarefa.Para atualizar a GUI no meio da tarefa, podemos colocar o código (escrito emprocess()
método de case1)SwingUtilites.invokeLater(new RunnableToExecuteProcessMethodCode())
no lugar onde chamamospublish()
método no caso1.Estou fazendo esta pergunta porque o problema especificado em questãoJava - SwingWorker - Podemos chamar um SwingWorker de outro SwingWorker em vez de EDT pode ser resolvido porSwingUtilities.invokeLater()
mas não pode ser resolvido comSwingWorker