繁体   English   中英

Java Swing Timer无限循环

[英]Java Swing Timer infinite loop

我遇到了一个简单的Java swing Timer I问题。 它做的一切都很好,直到不得不停下来。 我认为它是在定时器上创建一个无限循环的定时器,但我一直在关注多个教程,我无法看到我出错的地方。

代码说明:runButtonListener需要循环遍历filelinecount变量所说的次数(从不同的函数读取)。 目前的代码只是打印到系统,我将在稍后更新一些动画。 filelinecount在下面的代码中为0,但由不同的函数更改。 因此,为了调试,我认为如果手动更改filelinecount的值,附加的代码是可运行的。

任何帮助是极大的赞赏

private int filelinecount = 0;
private int timercount = 0;
private Timer timer;

class runButtonListener implements ActionListener{

    @Override
    public void actionPerformed(ActionEvent e){

        // LOOK AT TIMER!!!
        if (timercount == filelinecount) {
            timer.stop();
            System.out.println("stopping");
            //timercount = 0;
        } else {
            System.out.println("yo " + timercount + "," + filelinecount);

            timercount++;
        }

        timer = new Timer(100,this);
        timer.start();
    }
}

每次定时器回叫您时,您都会创建一个新定时器并启动它。

这包括你调用timer.stop()

如果要继续,则只需创建新计时器。

真的,你应该看看另一种方法,而不是不断地重新创建计时器。 根据您的具体要求,有多种方法可供选择。

例如,使用scheduleAtFixedRate ,使用工作线程或SwingWorkerScheduledExecutorService等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM