使用Java写一个动态爱心
时间: 2023-07-20 17:23:54 浏览: 98
好的,下面是一个使用 Java Swing 组件实现的动态爱心程序:
```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 int x, y;
private double t;
public DynamicHeart() {
x = getWidth() / 2;
y = getHeight() / 2;
t = 0.0;
Timer timer = new Timer(10, this);
timer.start();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
// 设置画笔颜色为红色
g.setColor(Color.RED);
// 计算当前坐标
double r = 100.0 * Math.sin(t);
int x1 = x - (int) (r * Math.cos(t));
int y1 = y - (int) (r * Math.sin(t));
int x2 = x - (int) (r * Math.cos(t + Math.PI));
int y2 = y + (int) (r * Math.sin(t + Math.PI));
// 绘制爱心
g.drawLine(x1, y1, x, y2);
g.drawLine(x2, y2, x, y1);
// 更新时间
t += 0.01;
}
@Override
public void actionPerformed(ActionEvent e) {
repaint();
}
public static void main(String[] args) {
JFrame frame = new JFrame("动态爱心");
frame.setSize(400, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
DynamicHeart heart = new DynamicHeart();
frame.add(heart);
frame.setVisible(true);
}
}
```
这个程序创建了一个 `DynamicHeart` 类,继承自 `JPanel`,用于绘制动态爱心。在构造函数中,我们使用 `Timer` 类创建了一个计时器,每隔一段时间就调用 `actionPerformed()` 方法,触发重绘事件。
在 `paintComponent()` 方法中,我们使用 `Graphics` 类的 `drawLine()` 方法绘制两条线段,组成一个爱心的形状。通过改变时间参数 `t`,我们可以让爱心动态地变化。
最后,在 `main()` 方法中,我们创建了一个 JFrame 窗口,并将 `DynamicHeart` 实例添加到窗口中。运行这个程序,您将看到一个动态的爱心在窗口中跳动。
阅读全文