2016-05-08 7 views
0

まず、これは重複する質問ではありません。私はちょうどカウントダウンタイマーと詰め物にトラブルを抱えている。コードを実行するたびに、静的になり、計画どおりに実行されません。countdown timer分と秒の問題Java

ここにコードがあります。私はコンストラクタでそれを行います。私が間違っていた場所?前もって感謝します。

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.Timer; 

public static int counterSeconds = 0; 
public static int counterMinutes = 10; 
public static Timer timer; 

public Quiz1Start() { 
    do { 
     Quiz1Start.timer = new Timer(1000, new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       if(Quiz1Start.counterSeconds == 0) { 
        Quiz1Start.counterSeconds = 60; 
        Quiz1Start.counterSeconds--; 
        Quiz1Start.counterMinutes--; 

        Quiz1Start.jLabelMinute.setText(String.valueOf(counterMinutes)); 
        Quiz1Start.jLabelSeconds.setText(String.valueOf(counterSeconds));       
       } else if(Quiz1Start.counterMinutes == 0) { 
        Quiz1Start.timer.stop(); 
       } 
      } 
     }); 
     timer.start(); 
    } while(counterMinutes == 0); 
} 
+0

私はそれをif-elseの外に置こうとしますが、ActionListenerを宣言する前に、この両方は動作しません。 ._。 – Asyraf

+0

私と一緒に質問をすることはたくさんあります。なぜコンストラクタ内でループするのですか?そして、なぜ、例えば 'start'メソッドではないのでしょうか。二番目。各ループ/サイクルごとに、独自の値を持つ新しいフレッシュタイマーを作成します。何が起こると思いますか?タイマーリスナーとwhileループ内で分が渡されるのはなぜですか?そのコードをすべてメソッドに入れて、コンストラクタの代わりにseparetlyを呼び出してみてください。 whileループを削除するだけでなく、ここでは使用しないためです。 – n247s

答えて

0

[OK]をする必要がありますと仮定if-elseの外に出て、うまくいった! :D

+0

私はdo-whileも削除したとは言及していませんが、私は数分のカウントダウンを繰り返すために必要であると思いました。 – Asyraf

0

while(counterMinutes == 0);この部分を確認します。

定義済み| counterMinutes |ループは最初のラウンド後には行われません。

私は今、私はそれを得た、私は別の新しいメソッドに宣言を移動し、その後、私はコードを変更、彼のアイデアを共有するためのユーザn247sとUğurBに感謝、それは

do { 
... 
} while(counterMinutes!=0) 
+0

アイデア先生、ありがとうございますが、うまくいきませんでした。私はまだactionPerformedで設定する必要があったものがあると思います... – Asyraf