我正在编写一个程序,暂时每半秒打印一次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/