我没有找到一些简单的 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/