使用有用的用户提供的代码 Stefan 我已经编辑了自己的代码来模仿他,但是我无法启动计时器。我已经尝试将实例移出私有void,这会导致其他错误,例如尝试重新定义timer变量。
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();
}
}
});
}
此代码对计时器没有影响。它没有开始计算
答案 0 :(得分:5)
您在每次点击按钮时都会创建新的计时器(第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();
}
}
});
}
...
}