繁体   English   中英

如何等待SwingWorker完成?

[英]How to wait until a SwingWorker is complete?

我有一个在后台计算的swing工作者,同时在JFrame中更新progressBar。

如何让我的主线程等待doInBackground()完成?

我知道我可以把东西放在done()方法中,但我想知道是否有办法让程序实际等待(该线程是正确的)。

类似于模态JDialog的东西。

所以...

SwingWorker a = new SwingWorker();
a.execute

doOtherStuff();

doOtherStuff仅在doInBackground完成后运行,但不将该方法放在SwingWorker的done()方法中。

简短的回答是,是的。

SwingWorker#get doInBackground将阻塞,直到doInBackground方法返回。

答案很长,可能不是你想做的。

如果你从EDT启动SwingWorker并调用SwingWorker#get你将阻止EDT,阻止它处理任何更新,这会导致你回到你使用SwingWorker的原因。

在这种情况下,您有两个选择。 您可以为SwingWorker提供一个回调接口,一旦SwingWorker完成,它就可以从done后调用。 或者您可以将PropertyChangeListener附加到SwingWorker并监视state值,等待它等于StateValue.Done

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM