有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JPanel不会显示在另一个JPanel之上

在我的界面中,我有一个带有空布局的JPanel作为背景标签持有者,没有其他组件。我试图在背景上添加一行图像作为网格布局。我已经确保图标在添加到JLabel时正常工作,但是当我尝试将网格面板添加到背景面板时,它不会显示图像。这是我目前的代码:

jPanel1 = new javax.swing.JPanel();
backgroundLabel = new javax.swing.JLabel();
backgroundLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Ile/Background.jpg")));

jPanel1.add(backgroundLabel);

这是背景,然后我尝试在上面添加图像网格:

JPanel gridPanel = new JPanel(new GridLayout(9,3));
JLabel ashes = new JLabel();
ImageIcon ashesIcon = new ImageIcon(getClass().getClassLoader().getResource("Resources/Ashes.png"));
ashes.setIcon(ashesIcon);
gridPanel.add(ashes);
jPanel1.add(gridPanel);
jPanel2.setVisible(true);

但是什么也没有显示出来,有什么建议吗


共 (1) 个答案

  1. # 1 楼答案

    I have one JPanel with null layout as a background label holder,

    不是基于你发布的代码。默认情况下,JPanel使用FlowLayout

    I'm trying to add a row of images on top of that background as a GridLayout.

    如果希望组件显示在图像顶部,我可以想到三种解决方案:

    1. 在JPanel上绘制图像,然后设置布局管理器并添加其他组件

    2. 将背景标签添加到面板,然后设置标签的布局管理器,并将其他组件添加到标签(而不是面板)

    3. 使用覆盖层。此布局将允许您将多个组件添加到同一面板中,然后组件将在Z标注中相互堆叠。您需要使包含GridLayout的面板不不透明