2017-08-10 97 views
0

在我的界面我有一个空布局作为背景标签持有人,没有其他组件的JPanel。我试图在GridLayout的背景上添加一行图片。我已经确定图标在添加到JLabel时能够正常工作,但是当我尝试将Grid Panel添加到背景面板时,它不显示图像。这是到目前为止我的代码:JPanel将不会显示在另一个JPanel

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

不要使用空布局,使用适当的布局 – Blasanka

+2

Java的图形用户界面有不同的OS”,屏幕大小,屏幕分辨率等方面的工作在不同的地区使用不同的PLAFs。因此,它们不利于像素的完美布局。请使用布局管理器或[它们的组合](http://stackoverflow.com/a/5630271/418556)以及[white space]的布局填充和边框(http://stackoverflow.com/a/17874718/ 418556)。 –

+2

.. 2)为了更好地提供帮助,请发布[MCVE]或[简短,独立,正确的示例](http://www.sscce.org/)。 3)例如获取图像的一种方法是热链接到[本问答](http://stackoverflow.com/q/19209650/418556)中看到的图像。 –

回答

0

我有一个的JPanel与空布局为背景标签夹,

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

我想在GridLayout的背景上添加一行图像。

如果你要显示的图像的顶部组件则有三个解决方案,我能想到的:

  1. 搽在JPanel中的图像,然后就设置布局管理器,并添加您的其他组件

  2. 添加背景标签面板,然后设置标签的布局管理器和其它组件添加到标签(未面板)

  3. 使用OverlayLayout。这种布局将允许您将多个组件添加到同一个面板,然后组件将以Z维堆叠在另一个之上。您将需要使包含GridLayout的面板非透明。

+0

我让背景使用了OverLayLayout,然后用图像设置网格布局顶部,并确保不透明。仍然没有图像可见。路径是正确的,我只是不明白为什么它不起作用。 – Eckersley

+0

@e,'我让背景使用了OverLayLayout' - 不,那不是什么建议或者OverlayLayout是如何工作的。你使一个正常的面板使用OverlayLayout。然后,将具有图像的面板添加到此面板,然后将此背景面板添加到此面板。因此涉及3个组件。 – camickr