JFrame中的多个PNG
Posted
技术标签:
【中文标题】JFrame中的多个PNG【英文标题】:Multiple PNG's in JFrame 【发布时间】:2021-09-01 10:33:52 【问题描述】:我试图在 JFrame
中显示多个具有透明背景的 png,但它们始终具有白色背景。
这是我的代码:
JFrame frame = this;
frame.setUndecorated(true);
back1 = new ImageIcon("res/launcher/back_1.png");
JLabel label = new JLabel(back1);
label.setOpaque(false);
label.repaint();
frame.add(label);
play_btn = new ImageIcon("res/launcher/play_btn.png");
label = new JLabel(play_btn);
label.setOpaque(false);
label.repaint();
frame.add(label);
frame.setTitle("Schach");
frame.setSize(WIDTH, HEIGHT);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
frame.setLocation(dim.width / 2 - this.getSize().width / 2, dim.height / 2 - this.getSize().height / 2); // JFrame in middle of screen
frame.setVisible(true);
frame.repaint();
【问题讨论】:
1) 为了尽快获得更好的帮助,edit 添加minimal reproducible example 或Short, Self Contained, Correct Example。 2) 例如,获取图像的一种方法是热链接到在this Q&A 中看到的图像。例如。 this answer 中的代码热链接到嵌入在this question 中的图像。 3)frame.setLocation(dim.width / 2 - this.getSize().width / 2, dim.height / 2 - this.getSize().height / 2); // JFrame in middle of screen
可以替换为 ..
frame.setLocationRelativeTo(null);
(短得多)。 4) 应用程序资源在部署时将成为嵌入式资源,因此明智的做法是立即开始访问它们。 embedded-resource 必须通过 URL 而不是文件访问。请参阅info. page for embedded resource 了解如何形成 URL。
【参考方案1】:
这样修复它:
JLabel back1 = new JLabel(new ImageIcon("res/launcher/back_1.png"));
back1.setLayout( new BorderLayout() );
JLabel knight = new JLabel(new ImageIcon("res/launcher/play_btn.png"));
back1.add(knight);
frame.add(back1);
【讨论】:
以上是关于JFrame中的多个PNG的主要内容,如果未能解决你的问题,请参考以下文章
如果我有多个具有相同文本的按钮,如何检查我的 JFrame 中的哪个按钮被单击?
Java Netbeans 8.0 Jframe GUI程序 - arraylist中的每个索引值都没有显示在jtextArea中的各行上