有没有办法不止一次启动和停止SwingWorker ..?

时间:2010-07-16 15:36:49

标签: java swingworker

我有一个开始和停止按钮。有人告诉我,我必须使用SwingWorker。我现在的代码工作得很好。我开始它,我停止它。但是如果我想重新开始呢?我正在读取doinBackground方法只会被执行一次。有没有办法再把它关掉.. ??

现在我无法创建该Swing Worker的新实例,因为在我的Swing Worker中我有一个while循环,表示while(isSet),当我点击Start按钮时设置为True,当我点击时设置为False在停止按钮上。

有没有办法解决这个问题.. ??

由于

3 个答案:

答案 0 :(得分:7)

SwingWorker API文档回答了您的问题:

  

SwingWorker只是为了设计   执行一次。执行SwingWorker   不止一次不会导致   调用doInBackground方法   两次。

SwingWorker API docs

每次按下开始按钮时,您都需要创建一个新的SwingWorker实例。

答案 1 :(得分:1)

我建议让对象封装SwingWorker。按下“go”按钮后,该对象将创建一个SwingWorker并将其设置为正确。设置“stop”标志后,SwingWorker会自行完成并告诉封装对象它已完成。再次按下“go”按钮时,封装对象会创建一个新的SwingWorker,依此类推。

答案 2 :(得分:0)

正如您所说,每个SwingWorker都被设计为执行一次。在这方面,每个对象代表一次执行。

因此,一个有效(也可能是最简单)的方法就是为每次点击开始按钮创建一个新的SwingWorker,如果你真的想每次产生另一个动作的实例

相关问题