SwingWorker 得到结果

Dmi*_*sev 3 java swing swingworker

我有一个 SwingWorker,它在后台执行一些计算(这些操作位于重写的doInBackground()方法中)。所以,我也用这个execute()方法来开始计算。当这些计算完成后我怎样才能得到结果?

Pau*_*aul 5

覆盖该done方法 - 该方法将在工作完成时被调用。Oracle 在这里有一个全面的教程:使用 Java SE 6 中的 SwingWorker 提高应用程序性能

另请参阅另一个SO问题:How do I use SwingWorker in Java?

您可以调用get来检索结果,但如果工作程序未完成,则线程将阻塞,直到工作程序完成为止。这意味着如果您get从事件调度线程 (EDT) 调用,并且工作人员未完成,您的 GUI 将无响应。您可以致电isDone以确定工作人员是否已完成。

最后,您可以附加一个属性更改侦听器,以获取工作进程的进度通知,包括它何时完成其任务。我发布的第一个链接给出了一个例子。