所以我试着学习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
谢谢!
发布于 2009-12-04 03:55:17
在计时器有机会触发之前,程序正在退出。添加一个Thread.currentThread().sleep(10000),您将看到计时器事件。
发布于 2009-12-04 04:04:45
计时器不会强制程序在main方法结束后继续运行。如果不启动另一个线程运行或确保主线程运行足够长的时间,定时器可能永远不会触发。
https://stackoverflow.com/questions/1842429
复制相似问题