gpt4 book ai didi

java - 将图像文件设置为背景

转载 作者:行者123 更新时间:2023-12-01 13:30:02 27 4
gpt4 key购买 nike

我有一个类,它扩展了 JFrame 并包含 3 个面板,以及另一个将所有 3 个面板放在一个布局中的类。

panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.add("North", panel2); //row of buttons
panel.add("Center",grid); // grid of buttons
panel.add("South",panel3); // a textfield that stretches across the total width of the frame
add(panel);



JLabel background = new JLabel (new ImageIcon ("C:\\.png"));
background.setBounds (0,0,500,550);
add(background);
//the background for the frame


setVisible (true);
setResizable (false);
setBounds (398,70, 570, 620);
setDefaultCloseOperation (EXIT_ON_CLOSE);

我的问题是程序给我的输出是背景图像/jlabel 中的图像仅可见或以某种方式遮盖面板/使按钮不可见。我需要背景图像位于按钮后面,我的意思是这就是为什么它被称为背景我缺少什么?

  • 我没有使用容器,因为它不会很快被设置为小程序,我不知道这个理由是否足够,但是是的

最佳答案

可能最简单的实现方法是,简单地使 JLabel 成为框架的内容 Pane ...

JLabel background =  new JLabel (new ImageIcon ("C:\\.png"));
setContentPane(background);

由此产生的下一个事实是,JLabel 默认情况下没有布局管理器,这使得向其中添加其他内容有点困难(或者至少不会导致您想要的结果)希望如此),所以接下来,您需要设置布局管理器...

setLayout(new BorderLayout()); // Forwarded to the content pane...

然后您就可以愉快地添加所有内容了...

add(panel2, BorderLayout.NORTH); //row of buttons
add(grid); // grid of buttons
add(panel3, BorderLayout.SOUTH); // a textfield that

您可能遇到的下一个问题是大多数组件都是不透明的,因此如果您希望看到背景,您可能需要对要添加的组件调用 setOpaque(false) ...

最后...

setVisible (true);
setResizable (false);

这会给您带来一些问题,请尝试使用...

setResizable(false);
pack();
setVisible(true);

ps- JLabel 不会自动调整图像大小,但 pack 应该有所帮助...假设其余内容适合背景图像的大小...

关于java - 将图像文件设置为背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21622692/

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