我有一个开始和停止按钮。有人告诉我,我必须使用SwingWorker。我现在的代码工作得很好。我开始它,我停止它。但是如果我想重新开始呢?我正在读取doinBackground方法只会被执行一次。有没有办法再把它关掉.. ??
现在我无法创建该Swing Worker的新实例,因为在我的Swing Worker中我有一个while循环,表示while(isSet),当我点击Start按钮时设置为True,当我点击时设置为False在停止按钮上。
有没有办法解决这个问题.. ??
由于
答案 0 :(得分:7)
SwingWorker API文档回答了您的问题:
SwingWorker只是为了设计 执行一次。执行SwingWorker 不止一次不会导致 调用doInBackground方法 两次。
每次按下开始按钮时,您都需要创建一个新的SwingWorker实例。
答案 1 :(得分:1)
我建议让对象封装SwingWorker。按下“go”按钮后,该对象将创建一个SwingWorker并将其设置为正确。设置“stop”标志后,SwingWorker会自行完成并告诉封装对象它已完成。再次按下“go”按钮时,封装对象会创建一个新的SwingWorker,依此类推。
答案 2 :(得分:0)
正如您所说,每个SwingWorker都被设计为执行一次。在这方面,每个对象代表一次执行。
因此,一个有效(也可能是最简单)的方法就是为每次点击开始按钮创建一个新的SwingWorker,如果你真的想每次产生另一个动作的实例