gpt4 book ai didi

java - 如何从JFrame中添加图片,附加到边框

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:18:36 24 4
gpt4 key购买 nike

您好,我想在我的 JFrame 边框中添加一些图像。是否可以将图片附加到 JFrame 的边框并将其创建为 1 个对象?

像这样:

enter image description here

最佳答案

我不确定是否可以将图像直接添加到 JFrame 的边框(欢迎提出建议)。我决定通过使用一个透明的内容面板来解决这个问题,并使用一个内部框架来像外部框架一样“出现”。

代码非常简单,但是,如果您想了解代码的工作原理,请告诉我。

这是启动和运行所需的最少代码。

您需要在类路径的根目录中提供您自己的 transparent-phone.png 图像(即在根包中的 PhoneWindow.java 文件旁边)。

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;

public class PhoneWindow {

public static void main(String[] args) {
new PhoneWindow();
}

public PhoneWindow() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
final JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// create the inner frame
final JInternalFrame frame2 = new JInternalFrame("My Telephone");
frame2.setClosable(true);
frame2.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
// add elements to the outer frame
frame.setUndecorated(true);
frame.setBackground(new Color(0, 0, 0, 0));
JPanel pane = new TranslucentPane();
frame.setContentPane(pane);
frame.setLayout(new BorderLayout());
// add inner frame and phone picture
frame.add(frame2, BorderLayout.CENTER);
frame.add(new JLabel(new ImageIcon(ImageIO.read(getClass().getResource("/transparent-phone.png")))), BorderLayout.EAST);
frame.setLocationRelativeTo(null);
frame.setMinimumSize(new Dimension(400, 300));
frame.pack();
// show
frame2.setVisible(true);
frame.setVisible(true);
} catch (Throwable ex) {
ex.printStackTrace();
}

}
});
}

public class TranslucentPane extends JPanel {

public TranslucentPane() {
setOpaque(false);
}

@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g.create();
g2d.setComposite(AlphaComposite.SrcOver.derive(0f));
g2d.setColor(getBackground());
g2d.fillRect(0, 0, getWidth(), getHeight());
}

}

}

这是完整的 Java 类(包括关闭和可拖动行为)

https://gist.github.com/nickgrealy/16901a6428cb79d4f179

这是最终产品的屏幕截图

注意手机内外的透明部分。

The final result with transparency.

引用资料:

关于java - 如何从JFrame中添加图片,附加到边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22276091/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com