无法使Java Timer工作(javax.swing.Timer)

时间:2009-12-03 19:49:10

标签: java timer

所以我试图了解javax.swing.Timer是如何工作的,但我无法让它做一个简单的操作。基本上我所要做的就是让系统每秒打印出“test2”,但似乎永远不会调用actionPerformed方法。我究竟做错了什么?

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;

public class Main 
{
    public static void main(String[] args)
    {
        System.out.println("test 1");

        final Other o = new Other();

        class TimerListener implements ActionListener
        {
            public void actionPerformed(ActionEvent e) 
            {
                System.out.println("test2");
            }               
        }
        //test
        System.out.println("test 3");

        ActionListener listener = new TimerListener();

        //test
        System.out.println("test 4");

        final int DELAY = 1000;
        Timer t = new Timer(DELAY, listener);

        //test
        System.out.println("test 5");

        t.start();

        //test
        System.out.println("test 6");
    } 
}

这是上面代码产生的输出:

测试1 测试3 测试4 测试5 测试6

谢谢!

2 个答案:

答案 0 :(得分:0)

程序在计时器有机会开火之前退出。添加Thread.currentThread().sleep(10000),您将看到计时器事件。

答案 1 :(得分:0)

主方法完成后,计时器不会强制程序继续运行。如果没有启动另一个线程来运行或确保主线程运行足够长的时间,计时器可能永远不会触发。