Java 520表白爱心动态代码怎么写

发布于:2024-05-19 ⋅ 阅读:(186) ⋅ 点赞:(0)

在Java中,创建动态的爱心表白效果可以通过多种方式实现,例如使用Swing图形库来绘制图形界面,结合动画效果。以下是一个简单的示例代码,它会在窗口中绘制一个红色的爱心,并带有"520"和"I Love You"的文字:

import javax.swing.*;
import java.awt.*;
import java.awt.geom.AffineTransform;

public class LoveHeart extends JPanel {
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D) g;
        g2d.setColor(Color.RED);
        g2d.setStroke(new BasicStroke(2));

        // 绘制爱心
        int x = getWidth() / 2 - 50;
        int y = getHeight() / 2 - 50;
        int width = 100;
        int height = 100;

        g2d.translate(x, y);
        g2d.drawOval(-width / 2, -height / 2, width, height);
        g2d.drawArc(-width / 2, 0, width, height, 0, -180);

        g2d.translate(-width / 2, height / 2);
        g2d.rotate(Math.PI);
        g2d.drawOval(-width / 2, -height / 2, width, height);
        g2d.drawArc(-width / 2, 0, width, height, 0, -180);

        g2d.translate(width / 2, -height / 2);
        g2d.rotate(Math.PI);
        g2d.setColor(Color.BLACK);
        g2d.setFont(new Font("Arial", Font.BOLD, 20));

        // 绘制文字
        String text1 = "520";
        String text2 = "I Love You";
        FontMetrics fm = g2d.getFontMetrics();
        g2d.drawString(text1, (getWidth() - fm.stringWidth(text1)) / 2, getHeight() / 2 - fm.getHeight() / 2);
        g2d.drawString(text2, (getWidth() - fm.stringWidth(text2)) / 2, getHeight() / 2 + fm.getHeight() / 2);
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame("Love Heart");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(new LoveHeart());
        frame.setSize(400, 400);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
}

这段代码创建了一个继承自JPanelLoveHeart类,并覆盖了paintComponent方法来绘制爱心和文字。爱心是通过绘制两个圆弧来形成的,文字使用Graphics2D对象绘制。

运行这个程序,你将看到一个包含红色爱心和"520"、"I Love You"文字的窗口。爱心和文字的位置在窗口中居中显示。

请注意,这个示例提供了一个基本的静态爱心表白效果。Java中的动画效果通常需要更复杂的处理,例如使用javax.swing.Timer来定期更新组件的绘制状态,或者使用JavaFX来创建更丰富的动画效果。如果你想要添加动态效果,可能需要进一步学习Java的动画API或使用第三方库。


网站公告

今日签到

点亮在社区的每一天
去签到