使用Timer 作帧触发器绘制转动风扇动画

这篇博客介绍了如何利用Java的javax.swing.Timer组件作为帧触发器,来创建一个转动的风扇动画。通过设定特定的时间间隔,Timer可以周期性地触发绘制帧的动作,从而实现动画效果。文章详细阐述了设置Timer的步骤,包括创建Timer对象、注册动作监听器以及启动计时器的方法。
摘要由CSDN通过智能技术生成

使用Timer 作帧触发器绘制转动风扇动画

        javax.swing.Timer在指定时间间隔触发一个或多个ActionEvent。一个示例用法是动画对象,它将Timer 用作绘制其帧的触发器。

         设置计时器的过程包括创建一个 Timer 对象,在该对象上注册一个或多个动作侦听器,以及使用 start 方法启动该计时器。例如,以下代码创建并启动一个每秒(该时间由Timer 构造方法的第一个参数指定)触发一次动作事件的计时器。Timer 构造方法的第二个参数指定接收计时器动作事件的侦听器。

int delay = 1000; //milliseconds
  ActionListener taskPerformer = new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
          //...Perform a tas

以下是一个简单的Java应用程序,可以绘制旋转的风扇,你可以根据自己的需要进行修改和调整。 ```java import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Fan extends JFrame { private FanPanel fanPanel; public static void main(String[] args) { Fan fan = new Fan(); fan.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); fan.setSize(400, 400); fan.setVisible(true); } public Fan() { super("Fan"); fanPanel = new FanPanel(); add(fanPanel); } private class FanPanel extends JPanel implements ActionListener { private Timer timer; private int angle; public FanPanel() { timer = new Timer(10, this); timer.start(); } public void actionPerformed(ActionEvent e) { angle += 1; if (angle >= 360) { angle = 0; } repaint(); } public void paintComponent(Graphics g) { super.paintComponent(g); int x = getWidth() / 2; int y = getHeight() / 2; int radius = Math.min(x, y) - 20; int[] xPoints = new int[4]; int[] yPoints = new int[4]; for (int i = 0; i < 4; i++) { xPoints[i] = x + (int)(radius * Math.cos(Math.toRadians(angle + i * 90))); yPoints[i] = y - (int)(radius * Math.sin(Math.toRadians(angle + i * 90))); } g.setColor(Color.RED); g.fillPolygon(xPoints, yPoints, 4); g.setColor(Color.BLACK); g.drawOval(x - radius, y - radius, radius * 2, radius * 2); } } } ``` 代码中使用了一个 `JPanel` 来绘制风扇,通过一个 `Timer` 定时器来定时更新风扇的角度。在 `paintComponent` 方法中,通过计算三角函数来确定风扇的四个点的坐标,并使用 `fillPolygon` 方法来绘制风扇的叶片。最后使用 `drawOval` 方法来绘制风扇的圆形轮廓。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值