【问题标题】:count down timer倒计时器
【发布时间】: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。跨度>
  • 是的,这只是第一个版本。我必须对其进行参数化。我只需要知道这是否准确到秒
  • 好吧,我在这里真的看不到真正的问题..

标签: java swing timer


【解决方案1】:

如果您已经实现了它,并且它按预期工作,那么这几乎就是“对吗?”的定义。所以只有你能回答。这里没有大量的代码样式问题或其他任何问题,而且在大多数情况下,您似乎按照设计使用了 Timer。

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

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

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

你的衣服?

另一方面,如果您只是构建一个简单的倒数计时器(例如,用于烹饪、提醒您洗完衣服等),那么它实际上只需要在 1-5 秒内准确无误'll be time is on the order of minutes/hours,多或少一点没有实际区别。我怀疑是否有人真的会注意到(甚至关心)在这类应用程序中是否会延迟几秒钟。如果是这种情况,请使用更简洁/更易于理解的实现。

【讨论】:

  • hm 我看到我必须使用系统时间,因为当我按下空格时我有功能,计时器将停止,并且通过这个实现它不是很精确
  • 我确定你是想写System.nanoTime()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-19
  • 1970-01-01
  • 2015-04-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多