java - 倒计时器

标签 java swing timer

我没有找到一些简单的 java swing 倒计时器教程,所以我决定以自己的方式实现它:

javax.swing.Timer t = new javax.swing.Timer(1000, new ClockListener());

class ClockListener implements ActionListener {

Integer m = 5;
Integer s = 0;

public void actionPerformed(ActionEvent e) {  
if ( (s == 0 ) and ( m == 0 ) ) 
    t.stop() 


    if (s == 0) {
        m--;
        s = 60;
    }
    s--;
    _timeField.setText(m.toString() + ":" + ( (s.toString().length() == 1) ? "0" + s.toString() : s.toString() ) );
}
}

_timeField 是 JTextField

从 5:00 倒数到 0:00 的正确方法是吗?

最佳答案

如果您已经实现了它,并且它按预期工作,那么这几乎就是“这是正确的吗?”的定义。所以只有你能回答这个问题。这里不存在大量的代码风格问题或其他任何问题,并且在大多数情况下,您似乎都按设计使用计时器。

问题是,“你的时间安排是什么?”

精确的化学/亚原子相互作用,或者原子 react 堆/空中交通管制的安全机制?

您原始问题下的评论提供了一些关于您可以进行的替代实现或修改的指示,具体取决于您想要执行的操作以及计时器需要的准确度。如果您需要亚秒级精度,您确实需要开始研究 System.nonoTime()

你要洗的衣服吗?

另一方面,如果您只是构建一个简单的倒计时器(例如用于 cooking 、提醒您洗衣服已完成等),那么它实际上只需要在 1-5 秒内准确,因为您时间大约是分钟/小时,超过或低于一点没有实际区别。我怀疑是否有人真的会注意到(甚至关心)在此类应用程序中是否有几秒钟的延迟。如果是这种情况,请选择更清晰/更容易理解的实现。

关于java - 倒计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7922873/

相关文章:

java - 有没有人想出如何使 javafx tableview 像 jtable 一样工作?

java - 回滚时取消 ejb 定时器

javascript - WebAudio 计时如何工作?使用 setInterval 是一个糟糕的解决方案吗?

java - 为什么初始化springboot时会出现调用bean失败的错误

Java:深度克隆/复制实例的推荐解决方案

java - @Resource注解在运行时为空

android - Android OpenCV应用程序中的计时器中的“Context cannot be resolved or is not a field”错误

java - 将多个 "randomly generated"对象添加到 ArrayList 导致多次添加同一个对象

Java - 如何访问 JTextArea 中突出显示的 Material

Java 如何将menuBar添加到JFrame而不破坏我的布局