2017-09-26 156 views
0

我有一個線程可以完成一些工作。還有一個javax.swing.Timer需要等待幾秒鐘並更新一個進度條。現在Java等待定時器直到完成

我的問題是,我想,當計時器結束像

jTextArea1.append("continue ..\n"); 

執行進一步的代碼。整個代碼運行在一個線程內。 有人可以給我一個提示如何做到這一點?

jTextArea1.append(String.format("%d seconds to wait ..\n", wait)); 
System.out.println("-------------------------------------------------------------"); 

waiting = true; 
final Timer timer = new Timer(wait*1000, new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
     jProgressBar1.setValue(jProgressBar1.getValue() + 1); 
     if (jProgressBar1.getValue() == 100) { 
      synchronized (this) { 
       waiting = false; 
       this.notify(); 
      } 
      ((Timer) e.getSource()).stop(); 
     } 
    } 
}); 
synchronized (timer) { 
    timer.start(); 
    while(waiting) 
     timer.wait(); 
} 
System.out.println(waiting + " " + new GregorianCalendar().getTimeInMillis()); 
jTextArea1.append("continue...\n"); 

回答

0

這裏:

if (jProgressBar1.getValue() == 100) { 

你已經有內部你的計時器,瞭解該定時器 「結束」 現在代碼

所以,我會做什麼:創建一個像onTimerEnd()的方法 - 和實施* **所有當計時器結束該方法發生你想要的東西 - 然後調用該方法。

+0

感謝您的回答。但我的問題是,我不想做一些東西,然後等待62秒,並顯示進度條,然後從頭開始?我將如何實現? –