import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class LoveLetter extends JFrame {
private JLabel heartLabel;
private JLabel messageLabel;
private Timer timer;
public LoveLetter() {
// 设置窗口标题
setTitle("爱意满满的技术表白");
// 设置窗口大小
setSize(400, 300);
// 设置窗口关闭操作
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 设置窗口居中
setLocationRelativeTo(null);
// 设置布局管理器
setLayout(new FlowLayout());
// 创建心形图案
heartLabel = new JLabel();
createHeart(heartLabel);
// 创建表白信息标签
messageLabel = new JLabel("<html><center>在这个技术世界里,我遇见了你。<br>你的代码,我的爱,我们共同编织着未来。</center></html>", SwingConstants.CENTER);
messageLabel.setFont(new Font("Serif", Font.BOLD, 18));
messageLabel.setForeground(Color.RED);
// 添加组件到窗口
add(heartLabel);
add(messageLabel);
// 设置定时器,每隔一段时间更新心形图案的透明度
timer = new Timer(100, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
float alpha = (float) (Math.sin(timer.getDelay() / 1000.0) + 1) / 2;
heartLabel.setAlpha(alpha);
if (alpha <= 0) {
timer.stop();
}
}
});
timer.start();
}
// 创建心形图案的方法
private void createHeart(JLabel label) {
Graphics2D g2d = (Graphics2D) label.getGraphics();
if (g2d != null) {
AlphaComposite alphaChannel = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1.0f);
g2d.setComposite(alphaChannel);
g2d.setColor(Color.RED);
g2d.fill(new HeartShape(new Point(100, 100), 100, 100));
g2d.dispose();
}
}
// 主方法,程序入口
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new LoveLetter().setVisible(true);
}
});
}
}
// 心形图形类
class HeartShape extends GeneralPath {
public HeartShape(Point p, int width, int height) {
moveTo(p.x, p.y);
curveTo(p.x, p.y - height / 4, p.x - width / 4, p.y - height / 4, p.x - width / 2, p.y + height / 4, p.x - width / 4, p.y + height / 4);
curveTo(p.x - width / 2, p.y + height / 4, p.x - width / 4, p.y + height / 4, p.x, p.y + height / 2);
curveTo(p.x + width / 4, p.y + height / 4, p.x + width / 2, p.y + height / 4, p.x + width / 4, p.y - height / 4);
curveTo(p.x + width / 2, p.y - height / 4, p.x + width / 4, p.y - height / 4, p.x, p.y - height / 4);
closePath();
}
}
这段Java代码创建了一个简单的图形用户界面(GUI),其中包含了一个心形图案和一段表白信息。心形图案的透明度会随着时间变化,营造出一种动态效果。代码使用了Java的Swing库来创建GUI,并利用了Graphics2D类来绘制心形图案。当运行这段代码时,会弹出一个窗口,展示你的爱意和编程技术感。
