java - 如何使用 Swing 计时器开始/停止动画

标签 java swing animation timer applet

谁能教我如何使用 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/

相关文章:

java - 如何动态添加新的自定义按钮?

java - JScrollPane 随机无法显示内容

javascript - 为什么我的 Spark 没有动画?

android - google plus recyclerView滚动动画

java - 如何在 Java 中以编程方式获取 Kafka Cluster 和 Broker 信息?

java - 是否可以指定在Java中运行哪个重载函数

java - 将类名添加到uibinder xml文件中的元素

java - 如何在 java 中有效地使用 cardlayout 以便使用各种面板构造函数中的按钮从面板切换

html - 悬停时的图标动画

java - Paypal 在 Wicket 应用程序中的 IPN