首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过同一按钮启动-停止计时器

通过同一按钮启动-停止计时器
EN

Stack Overflow用户
提问于 2014-05-20 17:14:22
回答 2查看 2.4K关注 0票数 0

我试着通过同样的Jbutton启动-停止计时器。让我分享我的代码;

按钮动作;

代码语言:javascript
运行
复制
private void ButtonActionPerformed(java.awt.event.ActionEvent evt) {                                       

        if(Button.getText().equals("START")){
        Button.setText("STOP");
        Spinner.setEnabled(false);
        Informer.setBackground(Color.green);
        Informer.setText("Running");
        Timer time = new Timer();
        ScheduledTask st = new ScheduledTask();
        time.schedule(st, 0, (int) Spinner.getValue()*1000*60);
        }
        else{
        Button.setText("START");
        Spinner.setEnabled(true);
        Informer.setBackground(Color.red);
        Informer.setText("Stopped");

        }

    }

当用户按下按钮时,按钮名称从STOP改为STOP,命名为informer textfield paint为绿色并在运行中写入,并在定时器启动时,

代码语言:javascript
运行
复制
public class ScheduledTask extends TimerTask {

    public void run() {
        if (Button.getText().equals("STOP")){
                   Worker1 worker1 = new Worker1();
                   worker1.execute();
                }
                else{
                ScheduledTask.this.cancel();
                }
    }
}

正如您所看到的,timer执行一个名为worker1的SwingWorker。如果我再按一次button (命名为STOP),jbutton被重命名为START和timer,在按钮文本中看不到STOP,而是stop本身。

想象一下,将定时器设置为1分钟,然后按下开始按钮。当开始按钮按下,worker1立即执行和计时器开始倒计时,你知道。在20-30秒内,按下停止按钮,等待5-10秒。再次按下START按钮。这里的问题是2个计时器已经在运行了。当第一个定时器倒计时完成时,执行worker1。5-10秒后,定时器结束旧的倒计时并再次启动worker1。

如果任何倒计时已经激活,当按下相同的按钮时,我如何停止当前计时器倒计时?

EN

回答 2

Stack Overflow用户

发布于 2014-05-20 17:21:39

您可以在同一位置使用两个不同的按钮。最初,当按下启动按钮时,定时器将启动,按钮将隐藏,停止按钮将出现,反之亦然。

票数 0
EN

Stack Overflow用户

发布于 2014-05-20 17:27:33

probmen根本不在swing JButtons中。

问题是您没有正确地取消工作任务。这里:

代码语言:javascript
运行
复制
    if (Button.getText().equals("STOP")){
               Worker1 worker1 = new Worker1();
               worker1.execute();
    }
    else{
            ScheduledTask.this.cancel();
    }

您不能保证在计时器结束时按钮上会有文字"STOP“。

您需要在按下停止按钮时停止计时器本身,以防止从一开始就启动计划任务。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23755630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档