在我的代码中,用户按下一个按钮,然后我希望它调用一个 SwingWorker 后台线程,我基本上循环遍历一个列表,将它与其他数据交叉引用,然后使用 JLabel 更新 GUI 每次通过我的环形。问题是我知道我应该在 doInBackground() 中执行此操作,但我没有什么可返回的,而且我还想在每次循环循环时用新的 JLabel 更新 JPanel。我该怎么做呢?谢谢!
问问题
1472 次
2 回答
6
这是一个完整的例子,我真的很喜欢Swing Worker Example
你必须使用publish()
和覆盖process()
例子:
class Worker extends SwingWorker<Void, String> {
@Override
protected void doInBackground() throws Exception {
//here you make heavy task this is running in another thread not in EDT
//process after some time call publish()
}
@Override
protected void process(List<String> chunks) {
//this is executed in the EDT
//here you update your label
}
}
于 2013-08-26T18:00:48.000 回答
4
阅读关于使用Swing Worker的 Swing 教程,尤其是关于Tasks that Have Interim Results
.
您将需要在循环中根据需要调用该publish()
方法。
于 2013-08-26T17:54:18.360 回答