所以,我一直在乱用Java中的Swing Timer,试图做一点时间计数器。然而,每当我制作一个计时器并让它运行时,动作执行的方法似乎没有反应。 这是我的简化UI类:
public class UI implements ActionListener {
private int value = 0;
Timer timer = new Timer(5,this);
@Override
public void actionPerformed(ActionEvent e) {
value++;
System.out.println(value);
}
public void start() {
timer.start();
}
}
这就是我的发射器的样子:
public class Launcher {
public static void main(String[] args) {
UI ui = new UI();
ui.start();
}
}
当我运行启动器时,没有任何反应。我知道他创建了UI并让计时器启动,但计时器似乎没有调用Actionperformed方法。 我想知道为什么。 它应该在每个间隔5(毫秒?)时显示+1值。
提前致谢!
答案 0 :(得分:1)
您的程序在计时器线程有机会启动之前退出。您应该在退出主线程之前给一点时间以允许计时器线程继续运行。 <{1}}解决后Thread.sleep(100)
。
答案 1 :(得分:0)
首先导入以下内容;
import java.awt.event.ActionEvent ;
import java.awt.event.ActionListener ;
import javax.swing.Timer ;
然后在表格的末尾初始化计时器,如下所示;
public static void main(String args []){
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new mainprogramme().setVisible(true);
}
});
}
private Timer timer ;
然后在初始化定时器后添加一个公共类,如下所示;
public class progress implements ActionListener {
public void actionPerformed(ActionEvent evt){
int n = 0 ;
if (n<100){
n++ ;
System.out.println(n) ;
}else{
timer.stop() ;
}
}
}
执行此操作后,转到j框架&gt;右键单击并选择&gt;事件&gt;窗口&gt;窗口打开并键入以下内容;
private void formWindowOpened(java.awt.event.WindowEvent evt) {
timer = new Timer(100,new progress()) ;
并且在您完成所有操作之后,将一个按钮命名为任何内容,并在其空白处键入以下内容,如下所示;
timer.start();
这就是它的代码,然后回复我......