我没有在java中找到一些简单的java倒计时器的sw 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倒计时的正确方法吗?
答案 0 :(得分:3)
如果你已经实现了它并且它按预期工作,那几乎就是“它是对的?”的定义。所以只有你能回答这个问题。这里没有大规模的代码风格问题,或者其他任何东西,并且大多数情况下你似乎都在使用Timer。
问题是,“你有什么时间安排?”
您原始问题下的注释提供了一些关于您可以进行的替代实现或修改的指示,具体取决于您要执行的操作以及计时器需要的准确程度。如果你需要亚秒精度,你真的想开始研究System.nonoTime()
。
另一方面,如果你只是建立一个简单的倒数计时器(例如用于烹饪,提醒你洗衣服等等)那么它真的只需要在1-5秒内准确,因为你时间是几分钟/小时的顺序,过了一点或者一点点都没有实际的区别。我怀疑是否有人真的会注意到(甚至关心)如果在这些类型的应用程序中几秒钟。如果是这种情况,请使用更清洁/更易于理解的实施。