使用Java语言实现一个动态的爱心图形 代码
时间: 2024-05-10 14:20:27 浏览: 16
```java
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
public class DynamicHeart extends JPanel implements ActionListener {
private static final long serialVersionUID = 1L;
private double angle;
private Timer timer;
public DynamicHeart() {
angle = 0;
timer = new Timer(10, this);
timer.start();
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
int width = getWidth();
int height = getHeight();
int x = width / 2;
int y = height / 2;
int radius = Math.min(width, height) / 4;
int x1 = (int) (x - radius * Math.sin(angle));
int y1 = (int) (y - radius * Math.cos(angle));
int x2 = (int) (x + radius * Math.sin(angle));
int y2 = (int) (y - radius * Math.cos(angle));
int x3 = x;
int y3 = (int) (y + radius * Math.sin(angle));
g.setColor(Color.RED);
g.fillOval(x1 - radius / 2, y1 - radius / 2, radius, radius);
g.fillOval(x2 - radius / 2, y2 - radius / 2, radius, radius);
g.fillArc(x - radius, y - radius, radius * 2, radius * 2, 0, 180);
g.setColor(Color.WHITE);
g.fillOval(x - radius / 2, y - radius / 2, radius, radius);
g.setColor(Color.RED);
g.fillArc(x - radius, y - radius, radius * 2, radius * 2, 0, -180);
g.setColor(Color.WHITE);
g.fillArc(x - radius, y - radius, radius * 2, radius * 2, 0, 180);
g.setColor(Color.RED);
g.fillArc(x - radius, y - radius, radius * 2, radius * 2, 180, -180);
g.drawLine(x1, y1, x3, y3);
g.drawLine(x2, y2, x3, y3);
}
public void actionPerformed(ActionEvent e) {
angle += 0.01;
repaint();
}
public static void main(String[] args) {
JFrame frame = new JFrame("Dynamic Heart");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 400);
frame.setLocationRelativeTo(null);
frame.setContentPane(new DynamicHeart());
frame.setVisible(true);
}
}
```