为什么我的计时器不工作?
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 的更多信息。
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 的更多信息。