我创建了一个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)的位置时动画停止。
但它没有。当我运行程序时,它只是像以前一样输出,动画稍慢。
这很令人困惑,有人可以帮忙吗?
非常感谢任何帮助,
答案 0 :(得分:3)
repaint()
实施中对actionPerformed()
的调用会安排稍后调用paintComponent()
,但您paintComponent()
的实施会在{start()
上调用Timer
1}}。这会创建一个无限循环,使Timer
保持运行。至少要从start()
移除对paintComponent()
的号召。