gpt4 book ai didi

Java Swing计时器启动问题

转载 作者:行者123 更新时间:2023-12-01 17:03:07 25 4
gpt4 key购买 nike

使用乐于助人的用户Stefan提供的代码,我编辑了自己的代码来模拟他的代码,但是我根本无法启动计时器。我尝试将实例移出私有(private)空间,但这会导致其他错误,例如尝试重新定义计时器变量。

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 行)。将计时器设置为类中的一个字段,对其进行一次初始化,并且仅在 ActionListener 中调用 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 Swing计时器启动问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26674422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com