【发布时间】:2011-10-27 21:50:34
【问题描述】:
我没有在java中找到一些简单的倒数计时器的java swing教程,所以我决定以我自己的方式实现它:
javax.swing.Timer t = new javax.swing.Timer(1000, new 时钟监听器());
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 的方法正确吗?
【问题讨论】:
-
SWT 计时器不是很准确。要在不使用外部库的情况下执行此操作,您应该查看
System.nanoTime(),它将获得更准确的结果。 -
@Treebranch:OP 使用的是 Swing 库,而不是 SWT gui 库,但无论如何,您的陈述对于 Swing 也是正确的,尽管 Swing Timer 可能足以满足他的目的。
-
致原始发帖人:我会给 ClockListener 一个构造函数,它接受一个 long 参数、倒计时的毫秒数,并用它初始化 m,而不是将其硬编码为 5。跨度>
-
是的,这只是第一个版本。我必须对其进行参数化。我只需要知道这是否准确到秒
-
好吧,我在这里真的看不到真正的问题..