我有多个扩展 SwingWorker 的类。我希望完成的是一个接一个地执行每个类(而不是在上一个类的完成方法中执行下一个类)。例如,假设我有:
ClassSwingW1 csw1 = new ClassSwingW1();
csw1.execute;
ClassSwingW2 csw2 = new ClassSwingW2();
csw2.execute;
ClassSwingW3 csw3 = new ClassSwingW3();
csw3.execute;
等等
public class ClassSwingW1 extends SwingWorker<Void, Void> {
@Override
protected Void doInBackground() throws Exception {
//do something
return null;
}
}
public class ClassSwingW2 extends SwingWorker<Void, Void> {
@Override
protected Void doInBackground() throws Exception {
//do something
return null;
}
}
public class ClassSwingW3 extends SwingWorker<Void, Void> {
@Override
protected Void doInBackground() throws Exception {
//do something
return null;
}
}
我希望 csw2 在 csw1 完成后执行,csw3 在 csw2 完成后执行。我不要他们 同时执行。我将如何做到这一点?谢谢
最佳答案
您可以使用 get()
method而不是 execute()
- 它将阻塞直到 SwingWorker 完成它的工作。只需确保您不从 EDT 调用它即可。
Javadoc 摘录:
Waits if necessary for the computation to complete, and then retrieves its result. Note: calling get on the Event Dispatch Thread blocks all events, including repaints, from being processed until this SwingWorker is complete.
关于java - 依次执行每个 SwingWorker 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10386920/