java swing实现动图
时间: 2023-08-31 10:05:58 浏览: 79
Java Swing 可以通过使用 javax.swing.Timer 类来实现动画效果。具体步骤如下:
1. 创建一个 JPanel 对象,用于显示动画。
2. 创建一个 Timer 对象,并设置其时间间隔,以及要执行的动画操作。
3. 在 Timer 对象中,使用 repaint() 方法重绘 JPanel 对象。
4. 在 JPanel 的 paintComponent() 方法中,根据动画需求绘制动画。
下面是一个简单的示例代码,实现了一个不断旋转的圆形动画:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class AnimatedCircle extends JPanel implements ActionListener {
private int angle = 0;
private final int DELAY = 10;
public AnimatedCircle() {
Timer timer = new Timer(DELAY, this);
timer.start();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g.create();
int x = getWidth() / 2;
int y = getHeight() / 2;
int r = 50;
int startAngle = 0;
int endAngle = angle;
g2d.setColor(Color.RED);
g2d.fillArc(x - r, y - r, 2 * r, 2 * r, startAngle, endAngle);
g2d.dispose();
}
@Override
public void actionPerformed(ActionEvent e) {
angle += 5;
repaint();
}
public static void main(String[] args) {
JFrame frame = new JFrame("Animated Circle");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 300);
frame.setLocationRelativeTo(null);
frame.setContentPane(new AnimatedCircle());
frame.setVisible(true);
}
}
```
在上面的示例代码中,我们创建了一个 AnimatedCircle 类,继承自 JPanel,并实现了 ActionListener 接口。在构造函数中,我们创建了一个 Timer 对象,并设置其时间间隔为 10 毫秒,每次执行 actionPerformed() 方法,都会将 angle 属性增加 5,并调用 repaint() 方法进行重绘。在 paintComponent() 方法中,我们绘制了一个红色的圆弧,其起始角度为 0,结束角度为 angle。最后,在 main() 方法中,我们创建了一个 JFrame 对象,并将 AnimatedCircle 对象设置为其内容面板,并将窗口显示出来。