相关疑难解决方法(0)

Java - SwingWorker和SwingUtilities.invokeLater()之间的区别

SwingWorker 用于以下目的:

  • 用于在不同的线程中运行长时间运行的任务,以防止GUI无响应
  • 用于通过done()方法在任务结束时使用长时间运行的任务生成的结果更新GUI .
  • 用于通过任务publish()和process()方法生成和发布的中间结果不时更新GUI .

SwingUtilities.invokeLater() 可以执行以下任务:

  • SwingWorker.execute()我们可以执行,而不是从EDT 执行方法,ExecutorService.submit(new MyRunnable())因为它还将创建另一个可以执行长时间运行任务的线程.
  • 为了在任务结束时更新GUI,我们可以在任务结束时放置代码(用done()case1的方法编写)SwingUtilites.invokeLater(new RunnableToExecuteDoneMethodCode()).
  • 为了在任务中间更新GUI,我们可以将代码(用process()case1的方法编写)SwingUtilites.invokeLater(new RunnableToExecuteProcessMethodCode())放在我们publish()在case1中调用方法的地方.

我问这个问题是因为Java-SwingWorker中指定的问题- 我们可以从其他SwingWorker调用一个SwingWorker而不是EDT可以通过SwingUtilities.invokeLater()但是无法解决SwingWorker

java swingworker swingutilities

9
推荐指数
1
解决办法
7878
查看次数

标签 统计

java ×1

swingutilities ×1

swingworker ×1