Yat*_*oel 9 java swingworker swingutilities
SwingWorker
用于以下目的:
done()
方法在任务结束时使用长时间运行的任务生成的结果更新GUI .publish()
和process()
方法生成和发布的中间结果不时更新GUI .SwingUtilities.invokeLater()
可以执行以下任务:
SwingWorker.execute()
我们可以执行,而不是从EDT 执行方法,ExecutorService.submit(new MyRunnable())
因为它还将创建另一个可以执行长时间运行任务的线程.done()
case1的方法编写)SwingUtilites.invokeLater(new RunnableToExecuteDoneMethodCode())
.process()
case1的方法编写)SwingUtilites.invokeLater(new RunnableToExecuteProcessMethodCode())
放在我们publish()
在case1中调用方法的地方.我问这个问题是因为Java-SwingWorker中指定的问题- 我们可以从其他SwingWorker调用一个SwingWorker而不是EDT可以通过SwingUtilities.invokeLater()
但是无法解决SwingWorker
SwingWorker
是一个帮助类 - 它不是你需要使用它,但使用它比手工完成相同的工作更简单和清晰.(它还使检查进度更容易.)请注意,它已添加版本6 - 之前有些人使用了Swing Tutorial中定义的更简单的类,或者执行了类似于您注意到的步骤.