new java.util.Timer().scheduleAtFixedRate(timeleft(), 0, 1000);
这是我想要每秒发生的方法timeleft()
的代码。
我的班叫做Timer。
不知道我为什么会收到错误。
它说"这里不允许使用void类型"当我将鼠标悬停在线上时。 我正在使用一个JFrame用于GUI,当我按下一个按钮以及一个计时器时,将其放入一个事件中,该计时器从您在文本字段中输入的任何数字开始倒计时。
答案 0 :(得分:2)
你说:
我正在使用JFrame作为GUI,当我按下一个按钮以及一个计时器时将其放入一个事件中,该计时器从您在文本字段中输入的任何数字开始倒计时。
我建议您考虑丢弃您提出问题的代码,以完全重新考虑您的方法。
如果您想在Swing GUI中创建并运行重复事件,请不要像您一样使用java.util.Timer,因为您可能很容易遇到严重的Swing线程问题。而是使用Swing Timer,一个适合Swing的Timer,因为Timer的ActionListener中的所有代码都保证在Swing事件线程上运行。
首先,您的代码可能类似于:
int timerDelay = 1000; // 1000 msecs or 1 second
Timer timer = new Timer(timerDelay, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// code that needs to be repeated goes here
}
});
timer.setInitialDelay(0);
timer.start();
虽然对于倒计时器,我不确定我是否将初始延迟设置为0.相反,我让它等待这段时间。
答案 1 :(得分:0)