2012-09-27 74 views
3

我有這樣的代碼:的Java:搖擺定時器等待

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(); 

有時工人過程需要超過10秒,但有時3-4sec,所以如何設置計時器等待工人的完整的執行?有什麼建議麼?

+1

SwingWatch在SwingWoker類中???如果是將其移出SwingWorker類,否則發佈時間短且可運行[SSCCE](http://sscce.org/http://example.com) – mKorbel

+0

對不起,我沒有正確地重寫它。當然計時器是失控的SwingWorker –

+0

然後張貼SSCCE證明您的問題類,否則你的問題太難回答的... – mKorbel

回答

4

SwingWorker類的Javadoc:

doInBackground方法是在一個工作線程調用之前,SwingWorker通知所有有關國家的財產變化StateValue.STARTED所有PropertyChangeListener。 doInBackground方法完成後,將執行done方法。然後SwingWorker通知任何PropertyChangeListener有關狀態屬性更改爲StateValue.DONE。

因此,當SwingWorker完成時會觸發事件。附加聽衆並在正確的事件上重新激活Timer