gpt4 book ai didi

java - Swing - 计时器不按时间间隔触发事件

转载 作者:行者123 更新时间:2023-11-30 06:24:56 24 4
gpt4 key购买 nike

我正在编写一个程序,暂时每半秒打印一次Printing...。这是我的代码:

package mainPackage;

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

public class Ticker {

public static void tick() {
System.out.println("Printing...");
}

public static void main(String args[]) {

ActionListener timerListener = new ActionListener(){

@Override
public void actionPerformed(ActionEvent e)
{
tick();
}
};

Timer mainTimer = new Timer(500,timerListener);
mainTimer.start();
}
}

根据我的理解,mainTimer 对象应该每 500 毫秒触发一次由 timerListener 处理的事件。当我执行这段代码时没有任何反应,我是否遗漏了一些明显的东西?

最佳答案

在 Swing 下使用 Swing 定时器event dispatch thread :

public static void main(String args[]) {

ActionListener timerListener = new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
tick();
}
};

SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
Timer mainTimer = new Timer(500,timerListener);
mainTimer.start();
}
});
}

如果您不打算从计时器更改 GUI,请考虑使用 java.util.Timer

关于java - Swing - 计时器不按时间间隔触发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47376073/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com