java实现满屏飘爱心
时间: 2023-09-02 08:12:26 浏览: 145
以下是Java实现满屏飘爱心的代码,你可以在 Eclipse 或者其他 Java 开发工具中运行它:
```java
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
public class LoveRain extends JPanel implements ActionListener {
private static final long serialVersionUID = 1L;
private Timer timer; // 定时器
private ArrayList<Point> pointsList; // 存储爱心坐标的集合
private int fontSize = 20; // 字体大小
private Font font = new Font("宋体", Font.BOLD, fontSize); // 字体
private int distance = 200; // 爱心从最高点落到最低点的距离
private int speed = 1; // 爱心下落的速度
private int interval = 10; // 定时器执行的时间间隔,单位是毫秒
private Color color = Color.RED; // 爱心颜色
public LoveRain() {
pointsList = new ArrayList<Point>();
timer = new Timer(interval, this);
timer.start();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(color);
g.setFont(font);
for (int i = 0; i < pointsList.size(); i++) {
Point point = pointsList.get(i);
g.drawString("❤", point.x, point.y);
}
}
@Override
public void actionPerformed(ActionEvent e) {
int x = (int) (Math.random() * getWidth()); // 随机生成x坐标
int y = -fontSize; // y坐标初始化为0
Point point = new Point(x, y);
pointsList.add(point);
repaint();
}
public void move() {
for (int i = 0; i < pointsList.size(); i++) {
Point point = pointsList.get(i);
point.y += speed;
if (point.y > getHeight() + fontSize) {
pointsList.remove(i);
}
}
}
public void start() {
timer.start();
}
public void stop() {
timer.stop();
}
public static void main(String[] args) {
JFrame frame = new JFrame("Love Rain");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
LoveRain loveRain = new LoveRain();
frame.add(loveRain);
frame.setSize(800, 600);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
Timer moveTimer = new Timer(10, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
loveRain.move();
}
});
moveTimer.start();
}
}
```
该程序使用了 Java Swing 组件实现了一个满屏飘爱心的效果。程序中使用定时器控制每隔一段时间产生一个新的爱心,使用 ArrayList 存储爱心的坐标,使用 move() 方法控制爱心下落的速度,使用 paintComponent() 方法绘制爱心。
阅读全文