我已经用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)的位置时动画停止。
但事实并非如此,当我运行程序时,它只是输出和以前一样的东西,动画稍微慢了一点。
这很让人困惑,有谁能帮帮忙吗?
任何帮助都将不胜感激,
发布于 2016-09-08 16:55:56
在您的actionPerformed()实现中对repaint()的调用安排了稍后对paintComponent()的调用,但是您的paintComponent()实现随后会在Timer上调用start()。这会创建一个无限循环,使Timer保持运行。至少,从paintComponent()中删除对start()的调用。
https://stackoverflow.com/questions/39386256
复制相似问题