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一次然后终止。我究竟做错了什么 ?所有帮助表示赞赏!
答案 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的更多信息。