Java:Swing Timer等待

时间:2012-09-27 11:11:41

标签: java swing timer swingworker

我有这样的代码:

final SwingWorker worker = new SwingWorker() { 
      @Override
      protected Object doInBackground() throws Exception {...};
}
Timer timer=new Timer(10000, new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            worker.execute(); 
        }
    });
    timer.start();

有时 worker 过程需要10秒以上,但有时需要3-4秒,因此如何设置计时器以等待 worker <的完全执行/ strong>?有什么建议吗?

1 个答案:

答案 0 :(得分:4)

请参阅SwingWorker类的javadoc:

  

在工作线程上调用doInBackground方法之前,SwingWorker会将状态属性更改通知给StateCalue.STARTED。 doInBackground方法完成后,执行done方法。然后,SwingWorker会将状态属性更改通知给StateCalue.DONE。

因此,SwingWorker完成时会触发事件。附上一个监听器并在正确的事件上重新激活Timer