能否提供一个详细的Java编程示例,展示如何实现爱心图案的动态跳动效果?
时间: 2024-10-20 22:14:07 浏览: 40
在Java中创建一个简单的爱心图案动态跳动效果,我们可以利用Swing库中的JLabel和Timer组件。下面是一个基本的示例,这个爱心会在屏幕上从左到右、从上到下随机移动:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.geom.Point2D;
public class HeartBounce extends JFrame {
private static final int HEART_SIZE = 30;
private JLabel heart;
private Point2D currentPos;
private Timer timer;
public HeartBounce() {
setSize(400, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 创建一个爱心标签
heart = new JLabel(new ImageIcon("heart.png")); // 假设你有一个名为"heart.png"的心形图片
heart.setSize(HEART_SIZE, HEART_SIZE);
heart.setLocation(currentPos.x, currentPos.y);
// 设置初始位置
currentPos = new Point2D.Double(-150, -150);
// 创建并启动动画定时器
timer = new Timer(100, e -> moveHeart());
timer.start();
}
private void moveHeart() {
if (currentPos.getX() > getWidth()) { // 当爱心到达屏幕右侧时,改变方向
currentPos.setLocation(-150, (int) currentPos.getY()); // 将X轴设置回起点,并保持Y轴不变
} else {
currentPos.setLocation(currentPos.getX() + 1, currentPos.getY()); // 沿X轴向右移动
}
heart.setLocation((int) currentPos.getX(), (int) currentPos.getY()); // 更新爱心的位置
repaint(); // 刷新界面
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> new HeartBounce().setVisible(true));
}
@Override
protected void paint(Graphics g) {
super.paint(g);
g.setColor(Color.RED); // 可以更改颜色
g.fillOval(currentPos.getX(), currentPos.getY(), HEART_SIZE, HEART_SIZE);
}
}
阅读全文