阅读量:0
在Java中,可以使用Java 2D API来实现Line2D动画效果。以下是一个简单的示例,展示了如何使用javax.swing.Timer
来创建一个简单的Line2D动画:
- 首先,导入所需的库:
import javax.swing.*; import java.awt.*; import java.awt.geom.*; import java.awt.event.*;
- 创建一个继承自
JPanel
的类,用于绘制Line2D动画:
class Line2DAnimationPanel extends JPanel implements ActionListener { private static final int WIDTH = 800; private static final int HEIGHT = 600; private static final int LINE_LENGTH = 100; private static final int LINE_SPEED = 5; private Line2D.Double line; private Timer timer; public Line2DAnimationPanel() { line = new Line2D.Double(WIDTH / 2, HEIGHT / 2, WIDTH / 2, HEIGHT / 2 - LINE_LENGTH); timer = new Timer(1000 / LINE_SPEED, this); timer.start(); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2d = (Graphics2D) g; g2d.setStroke(new BasicStroke(5)); g2d.draw(line); } @Override public void actionPerformed(ActionEvent e) { if (line.getY1() > 0) { line.setY1(line.getY1() - LINE_SPEED); } else { line.setY1(HEIGHT - LINE_LENGTH); line.setY2(HEIGHT - LINE_LENGTH); } repaint(); } public static void main(String[] args) { SwingUtilities.invokeLater(() -> { JFrame frame = new JFrame("Line2D Animation"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(WIDTH, HEIGHT); frame.add(new Line2DAnimationPanel()); frame.setVisible(true); }); } }
在这个示例中,我们创建了一个名为Line2DAnimationPanel
的类,它继承自JPanel
。我们使用javax.swing.Timer
来定时更新Line2D的位置,并在每次更新后调用repaint()
方法重绘面板。
paintComponent()
方法用于绘制Line2D,我们使用Graphics2D
对象来设置画笔样式和颜色。actionPerformed()
方法用于处理计时器事件,当计时器触发时,我们更新Line2D的位置,并调用repaint()
方法重绘面板。
最后,在main()
方法中,我们创建了一个JFrame
窗口,将Line2DAnimationPanel
添加到窗口中,并设置窗口的大小和可见性。