2016-10-12 5 views
1

にタイマーを停止するにはどうすれば色offlashingランダムシーケンスを刺激するためにいくつかのボタンの色を変更するために少しのコードを書きました。私は私のためにこれを行うためにタイマーを設定しているが、私はちょうどそれがは、Swingアプリケーション

HERESに私のコードあなたがそれを行うことができますいくつかの方法があります

  Timer timer = new Timer(100, new ActionListener() { 
        @Override 
        public void actionPerformed(ActionEvent e) { 
         int buttons[] = new int[9]; 

         for (int j = 0; j < buttons.length; j++) { 

         // System.out.println("times"); 
          Component button = frame.getContentPane().getComponent(j); 
          int Red = new Random().nextInt(255 - 1) + 1; 
          int Green = new Random().nextInt(255 - 1) + 1; 
          int Blue = new Random().nextInt(255 - 1) + 1; 

          button.setBackground(new Color(Red, Green, Blue)); 

          SwingUtilities.updateComponentTreeUI(button); 

         } 

        }// } 

       }); timer.start(); 
+1

Timerオブジェクトでstop()メソッドを呼び出す必要があります。いつ/あなたはそれを止めたいですか? –

+1

iは整数変数カウンタを作成し、forループが、動作しませんで、それをインクリメントすることを試みた@fastsnil変数値が8 –

+0

に到達tick.stopタイマータイマーは、あなたはおそらく私に何を表示することができたときに、それをインクリメントvariable.thenを作成しますあなたはコードを意味しますか? – Claudiga

答えて

1

停止する方法を知らない、ここで迅速なアプローチのカップルです。

一つの方法は、System.currentTimeMillis()を利用することにより、次のとおりです。

private Timer timer; 
private final int DELAY = 100; 
private final int DURATION = 10_000; 
private long startTime; 

public void timerExample() { 
    timer = new Timer(DELAY, new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent e) { 
      if (System.currentTimeMillis() >= startTime + DURATION) { 
       System.out.println("Done"); 
       timer.stop(); 
      } else { 
       System.out.println("Tick"); 
      } 
     } 
    }); 
    startTime = System.currentTimeMillis(); 
    timer.start(); 
} 

現在時刻がstartTime + DURATIONよりも大きい場合、この1はTimerを停止します。は例えば必要ティックもしタイマの合計数を計算することができる10,000msとして

private Timer timer; 
private final int DELAY = 100; 
private final int DURATION = 10_000; 
private final int TOTAL_TICKS = DURATION/DELAY; 
private int tickCounter = 0; 

public void timerExample() { 
    timer = new Timer(DELAY, new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent e) { 
      if (++tickCounter == TOTAL_TICKS) { 
       System.out.println("Done"); 
       timer.stop(); 
      } else { 
       System.out.println("Tick"); 
      } 
     } 
    }); 
    timer.start(); 
} 
100ミリ秒としてDELAY

DURATION

別の方法は、このカウンタの使用であります10,000/100 = 100ティック。ダニの合計数に達した場合

アクションリスナーが発射されるたびに、それがチェックし、場合には、そのタイマーを停止します。

関連する問題