谁能教我如何使用 swing timer
来达到以下目的:
当我点击鼠标时,我需要一个开始动画的多边形(简单的动画,如旋转);并在我再次点击时停止动画。
我在理解 MouseListener
的工作方式方面没有问题,但是对于实际的动画。我尝试在 paint()
方法中用 while block 模拟动画,我将在其中绘制、删除和重绘多边形(例如模拟旋转),但在 while 内,小程序不会听点击。它只会在一段时间后收听。当我单击鼠标时,我需要 Swing 计时器来打破时间。
最佳答案
import javax.swing.Timer;
添加一个属性;
Timer timer;
boolean b; // for starting and stoping animation
将以下代码添加到框架的构造函数中。
timer = new Timer(100, new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
// change polygon data
// ...
repaint();
}
});
覆盖 paint(Graphics g)
并根据 actionPerformed(e)
修改的数据绘制多边形。
最后,启动/停止动画的按钮在其事件处理程序中具有以下代码。
if (b) {
timer.start();
} else {
timer.stop();
}
b = !b;
关于java - 如何使用 Swing 计时器开始/停止动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8088002/