JPanel不会在另一个JPanel上显示

时间:2017-08-10 12:07:49

标签: java swing user-interface

在我的界面中,我有一个带有空布局的JPanel作为背景标签持有者,没有其他组件。我正在尝试在该背景上添加一行图像作为GridLayout。我确保添加到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 个答案:

答案 0 :(得分:0)

  

我有一个带有空布局的JPanel作为背景标签持有者,

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

  

我正在尝试在该背景上添加一行图像作为GridLayout。

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

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

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

  3. 使用OverlayLayout。此布局允许您将多个组件添加到同一面板,然后组件将在Z维度中堆叠在一起。您需要使包含GridLayout的面板不透明。