为什么我的计时器不工作?

时间:2015-03-08 00:11:58

标签: java timer

public class TimerProgram extends JFrame {
    public TimerProgram(){

       int  DELAY=1000;
       Timer t = new Timer(DELAY,new TimerListener());
          t.start();

    }
      class TimerListener implements ActionListener{
        public void actionPerformed(ActionEvent e) {
            System.out.println("Hello");

          }
        }     

      public static void main(String[]args){
          new TimerProgram();
      }
}

我正在尝试制作一个定时器,每秒输出一个单词hello,但似乎当我输入DELAY值1000时,它输出hello一次然后终止。我究竟做错了什么 ?所有帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

在定时器解雇之前退出JVM。

尝试:

t.setInitialDelay(0);
t.start();

看到差异。

或者更好的方法是在事件调度线程(EDT)上执行代码。所有GUI代码都应该在EDT上执行。通过使用SwingUtitities.invokeLater(),您可以确保在代码执行时创建了EDT:

EventQueue.invokeLater(new Runnable()
{
    public void run()
    {
          new TimerProgram();
    }
});

阅读Concurrency上Swing教程中的部分,了解有关EDT的更多信息。