Java Swing计时器启动问题
使用有用用户Stefan提供的代码,我编辑了自己的代码来模拟他的,但是我根本无法启动计时器。我曾尝试将实例移出private void,这会导致其他错误,比如尝试重新定义timer变量Java Swing计时器启动问题,java,swing,netbeans,timer,Java,Swing,Netbeans,Timer,使用有用用户Stefan提供的代码,我编辑了自己的代码来模拟他的,但是我根本无法启动计时器。我曾尝试将实例移出private void,这会导致其他错误,比如尝试重新定义timer变量 private Timer timer; private void StartStopTimerActionPerformed(java.awt.event.ActionEvent evt) {
private Timer timer;
private void StartStopTimerActionPerformed(java.awt.event.ActionEvent evt) {
timer = new Timer(5000,new ActionListener(){
@Override
public void actionPerformed(ActionEvent evt) {
}
});
StartStopTimer.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (!timer.isRunning()) {
timer.start(); AddOneActionPerformed(evt);
} else {
timer.stop();
}
}
});
}
此代码对计时器没有影响。它不会开始计数您在每次单击按钮(第3行)时都会创建新计时器。将计时器设置为类中的一个字段,初始化它一次,并且只在ActionListeners中调用start和stop 要暂停计时器调用“stop()”,要重置计时器,请调用“restart()” 更新
import javax.swing.Timer;
class TimerExample {
// only one timer per class (field)
private Timer timer;
TimerExample() {
// initialize: counts 5 seconds, calls actionPerformed() and stops
timer = new Timer(1000, new ActionListener(){
@Override
public void actionPerformed(ActionEvent evt) {
// handle timer invoked ...
System.out.println("Now!");
}
});
timer.setRepeats(true);
JButton startStopBtn = new JButton("Start / Stop");
startStopBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (!timer.isRunning()) {
timer.start();
} else {
timer.stop();
}
}
});
}
...
}
您在每次单击按钮(第3行)时都会创建新计时器。将计时器设置为类中的一个字段,初始化它一次,并且只在ActionListeners中调用start和stop 要暂停计时器调用“stop()”,要重置计时器,请调用“restart()” 更新
import javax.swing.Timer;
class TimerExample {
// only one timer per class (field)
private Timer timer;
TimerExample() {
// initialize: counts 5 seconds, calls actionPerformed() and stops
timer = new Timer(1000, new ActionListener(){
@Override
public void actionPerformed(ActionEvent evt) {
// handle timer invoked ...
System.out.println("Now!");
}
});
timer.setRepeats(true);
JButton startStopBtn = new JButton("Start / Stop");
startStopBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (!timer.isRunning()) {
timer.start();
} else {
timer.stop();
}
}
});
}
...
}
抱歉,我不想打扰你们,但你们介意举个例子吗?我为你们的代码制作了一个单独的java文件,但我一直在包中得到错误create class timer。我不是100%确定这意味着什么。我还遇到另一个错误,即无法将Int转换为String,其中以毫秒为单位的值是我用您提供的代码修改我的代码的,但现在的问题是计时器不会启动对不起,我不想打扰您,但您介意给出一个示例吗?我为您的代码制作了一个单独的java文件,但我一直在包中得到错误CREATECLASSTIMER。我不是100%确定这意味着什么。我还收到另一个错误,即无法将Int转换为String,其中以毫秒为单位的值是我用您给出的代码修改代码的,但现在的问题是计时器将不会启动示例中提到的,计时器在5秒后执行actionPerformed方法一次。如果希望计时器每秒计数,则需要将间隔(5000)设置为1000,并调用timer.setRepeats(true)。更新了我的答案。正如我在示例中提到的,计时器在5秒后执行actionPerformed方法一次。如果希望计时器每秒计数,则需要将间隔(5000)设置为1000,并调用timer.setRepeats(true)。更新了我的答案。