【问题标题】:JAVA: start timer, stop timer at 0 seconds, restart timerJAVA:启动定时器,0秒停止定时器,重启定时器
【发布时间】:2015-06-14 15:48:00
【问题描述】:

私有代码在一个 Jbutton 中,它在鼠标点击时启动一个计时器。当经过的时间等于原始时间时,底部附近的 if 语句不会停止计时器,但不会。我该如何解决?此外,当我按下按钮时,计时器会以更高的速度加速。

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

【问题讨论】:

  • 想象一下,我给你寄了一封信,在寄出之后,我假设你在读它。同样在这里,您将任务“提交”到计时器,并且您的测试(if)甚至在提交之前。
  • 如何显示时间递减?

标签: java timer countdown timertask


【解决方案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

【讨论】:

    猜你喜欢
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多