2015-06-14 3 views
0

Закрытый код находится в Jbutton, который запускает таймер при щелчке мышью. Оператор if ближе к нижней части не останавливает таймер, когда прошедшее время равно исходному времени, но не соответствует. Как это исправить? Кроме того, когда я подавляю кнопку, таймер разгоняется с увеличенной скоростью.JAVA: таймер запуска, таймер остановки в 0 секунд, таймер перезапуска

import java.awt.*; 
import java.util.*; 


public class refractiveIndex extends javax.swing.JFrame { 

public static int time = 10; 
public static int elapsedTime = 0; 

private void nextQActionPerformed(java.awt.event.ActionEvent evt) { 

time = 10; 
elapsedTime = 0;          

    final Timer timer = new Timer(); 
    TimerTask task = new TimerTask() 
    { 
     public void run() 
       { 
        elapsedTime++;//amount of time passed 
        timeLeft.setText("" + (time - elapsedTime));//int 'time' = 0 (this is time left) 
       } 
    }; 

    if(time - elapsedTime == 0) 
    { 
     timer.cancel();//timer stops after 5 secs 
     score1 = 0;//resets score 
     question.setText("GAME OVER"); 
    } 

    timer.scheduleAtFixedRate(task, 500, 500);//.5 second delay, rate of .5 second 
+1

Представьте, что я пришлю вам письмо, и только после его публикации я предполагаю, что вы читаете его. То же самое, вы «отправляете» задачу на таймер, и ваш тест ('if') еще до отправки. –

+0

Как мне отображать временное декрементирование? – Ben

ответ

1

Вы можете адаптировать свой обычай TimerTask:

TimerTask task = new TimerTask() { 
    public void run() { 
     elapsedTime++;//amount of time passed 
     timeLeft.setText("" + (time - elapsedTime)); 

     if (time - elapsedTime == 0) { 
      cancel(); 
      score1 = 0;//resets score 
      question.setText("GAME OVER"); 
     } 
    } 
}; 

Смотрите также this question.

Смежные вопросы