【问题标题】:restart timers for one operation in javajava中一项操作的重新启动计时器
【发布时间】:2025-12-30 03:20:22
【问题描述】:

我有一个包含计时器的按钮,但是当我再次单击该按钮时,同一个计时器开始计数两次。我想每次都停止计数器并重新启动它。我该怎么做?

    @FXML
    private void handleButtonAction(ActionEvent event) {
        int cnt=0;
        Timer timer=new Timer();
        TimerTask task=new TimerTask() {
            @Override
            public void run() {
                cnt++;
                System.out.println("task: "+cnt);  
            }
         };
         timer.schedule(task, 0, 3000);
    }

当我再次单击该按钮时,它会调用系统两次。

【问题讨论】:

  • 你能在你的问题中添加一些代码吗?
  • 没错@pfaehlfd

标签: java timer timertask


【解决方案1】:

通过调用 Timer timer = new Timer();在 handleButtonAction 中,每次点击都会创建一个新的 Timer。

你必须在方法外声明Timer,然后你可以通过点击按钮重启它:

Timer timer;
private void handleButtonAction(ActionEvent event) {
    int cnt=0;
    timer = new Timer();
    TimerTask task = new TimerTask() {
        @Override
        public void run() {
            cnt++;
            System.out.println("task: "+cnt);  
        }
     };
     timer.schedule(task, 0, 3000);
}

这样你总是重启同一个计时器。

【讨论】:

  • 很抱歉,它会继续重复计算。
最近更新 更多