2017-08-10 95 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