为什么java swing定时器类不工作?
这是我的主课为什么java swing定时器类不工作?,java,multithreading,swing,timer,actionlistener,Java,Multithreading,Swing,Timer,Actionlistener,这是我的主课 import javax.swing.Timer; public class Test { public static int k=9; public static void main(String[] args) { Timer t = new Timer(100, new Loop()); t.start(); } } 还有我的类循环,它实现了ActionListener import java.
import javax.swing.Timer;
public class Test {
public static int k=9;
public static void main(String[] args) {
Timer t = new Timer(100, new Loop());
t.start();
}
}
还有我的类循环,它实现了ActionListener
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Loop implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
if(Test.k==9){
System.out.println("Its's Working");
}
}
}
我不知道为什么?当我完全知道它需要什么,但它没有在控制台中打印“它正在工作”时
还有一个问题是“这个计时器类类似于java中的线程吗?”
谢谢你的回答 您的程序在启动计时器后立即退出,使其没有机会启动 出于某种原因,AWT事件调度线程(EDT)需要启动,计时器才能保持活动状态 Swing应该是从这个线程使用的。如果你这样做,它应该会起作用
java.awt.EventQueue.invokeLater(() -> {
Timer t = new Timer(100, new Loop());
t.start();
});
为了避免缩进大量代码,并且有一个简短的main
,我倾向于创建一个方法调用go
,并使用一个方法引用
java.awt.EventQueue.invokeLater(Test::go);
private static void go() {
如果要激活JFrame类的t.sart(),我应该怎么做?