我正在创建一个个人资料页面。在左侧,我向 jpanel 添加了一个包含背景图像的 jlabel。现在,在此面板上,我想为图标添加另一个 jlabel。然而,它并没有出现。请帮助我。
P.s:这只是代码的一部分
public CustomerProfile()
{
super("Customer Profile");
setLayout(new BorderLayout());
//PROFILE DETAILS JPANEL
jpProfile = new JPanel();
add(jpProfile, BorderLayout.WEST);
//BACKGROUND IMAGE OF THE PROFILE JPANEL
ImageIcon background_img = new ImageIcon("background.jpg");
Image img = background_img.getImage();
Image tempImg = img.getScaledInstance(350, 600, Image.SCALE_SMOOTH);
background_img = new ImageIcon(tempImg);
background = new JLabel("",background_img,JLabel.CENTER);
jpProfile.add(background);
//PROFILE ICON
ImageIcon profImg = new ImageIcon("female.png");
jlProfileIcon = new JLabel();
jlProfileIcon.setIcon(profImg);
//ADDING PROFILE ICON TO JPANEL
jpProfileIcon = new JPanel();
jpProfileIcon.add(jlProfileIcon);
//jpProfile.setOpaque(false);
//jpProfileIcon.setOpaque(false);
jpProfileIcon.add(jlProfileIcon);
background.add(jpProfileIcon);
}
最佳答案
默认情况下,只有 JPanel 使用布局管理器。
JLabel 不使用布局管理器,因此添加到标签的任何组件的大小/位置都不会更改。组件的默认大小为 (0, 0),因此无需绘制任何内容。
尝试:
background = new JLabel("",background_img,JLabel.CENTER);
background.setLayout( new BorderLayout() ); // added
…
background.add(jlProfileIcon);
不需要以下代码:
//jpProfileIcon = new JPanel();
//jpProfileIcon.add(jlProfileIcon);
也就是说,您不需要创建 JPanel,只需向其添加标签即可。
更好的选择是将背景图像绘制到面板上,然后您可以正常将标签添加到面板上。请参阅:Background Panel实现此功能的类。
关于java - 无法在 java 中的背景图像上添加内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60959313/