可能重複:
How do I wait for a SwingWorker's doInBackground() method?有沒有辦法阻止主線程,直到完成一個迴轉工作?
我讀過它真的不好的做法,這樣做,但我認爲它的最好辦法,我達到我的目的...... 是有一種方法可以阻止主線程,直到swing工作者在下面的例子中完成爲止?
public void flashNode(Node node, int noOfFlashes) {
GraphUpdater updater = new GraphUpdater(node, noOfFlashes);
updater.execute();
}
和SwingWorker
類
public class GraphUpdater extends SwingWorker<Integer, Integer> {
Node node;
int noOfFlashes;
public GraphUpdater(Node n, int noFlashes) {
node = n;
noOfFlashes = noFlashes;
}
@Override
protected Integer doInBackground() throws Exception {
Color origColor = node.getColor();
for (int i=0; i<noOfFlashes; i++) {
changeNodeColor(node, Color.WHITE);
Thread.sleep(500);
changeNodeColor(node, origColor);
Thread.sleep(500);
}
return 1;
}
}
在此先感謝
見http://stackoverflow.com/questions/4261666/how-do-i-wait -for-a-swingworkers-doinbackground-method –
但是,如果您想要首先阻止主UI線程,爲什麼要使用Swingworker呢?你可以在主線程中運行代碼。 –