2017-09-26 10 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秒待ってからプログレスバーを表示して、最初からやり直していくことをやめたいということです。私はそれをどのように実装しますか? –

関連する問題