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

Why isn't my timer working?

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 一次然后终止。我究竟做错了什么 ?感谢所有帮助!

JVM 在定时器触发前退出。

尝试:

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

看看区别。

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

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

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