所以我试图了解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
谢谢!
答案 0 :(得分:0)
程序在计时器有机会开火之前退出。添加Thread.currentThread().sleep(10000)
,您将看到计时器事件。
答案 1 :(得分:0)
主方法完成后,计时器不会强制程序继续运行。如果没有启动另一个线程来运行或确保主线程运行足够长的时间,计时器可能永远不会触发。