停止" javax.swing.timer"不会暂停动画

时间:2016-09-08 08:37:02

标签: java swing animation timer

我创建了一个javax.swing.timer的动画,它似乎工作正常。

然而,动画将永远存在,所以我决定添加timer.stop()方法。

这是代码的一小部分:

public void paintComponent(Graphics g) {

    super.paintComponent(g);

    g.setColor(Color.RED);
    g.fillOval(xGrid, 200, 50, 50);

    t.start();
}

public void actionPerformed(ActionEvent event) {

    if (xGrid >= 350) {

        t.stop();
    }

    xGrid++;
    repaint();
}

我期待当圆圈到达(350,200)的位置时动画停止。

但它没有。当我运行程序时,它只是像以前一样输出,动画稍慢。

这很令人困惑,有人可以帮忙吗?

非常感谢任何帮助,

1 个答案:

答案 0 :(得分:3)

repaint()实施中对actionPerformed()的调用会安排稍后调用paintComponent(),但您paintComponent()的实施会在{start()上调用Timer 1}}。这会创建一个无限循环,使Timer保持运行。至少要从start()移除对paintComponent()的号召。