2013-05-09 81 views
1

我試圖使用JLayeredPaneJFrame上添加到控件(JPanelJLabel)上。帶JPanel和JLabel的帶圖標的JLayeredPane

標籤在ImageIcon幫助下顯示背景圖像,面板上有按鈕控件。它顯示了帶有背景圖片的jlabel

但是面板控件未顯示。我正在使用下面的代碼。

try 
    { 
    JLayeredPane layers= new JLayeredPane(); 
    ImageIcon img1= ImageIcon("path upto image"); 
    JLabel l1= new JLabel(""); 
    l1.setIcon(img1); 


    JPanel panel1 = new JPanel(); 

    layers.add(l1); 
    layers.add(panel1); 

    add(layers); 
} 
catch(Exception ex){ex.printStackTrace();} 

如何顯示面板控件?

+0

1)爲了更好地幫助您,請發佈[SSCCE](http://sscce.org/)。 2)對代碼塊使用一致的邏輯縮進。代碼的縮進旨在幫助人們理解程序流程。 – 2013-05-09 06:19:51

+1

在一個JLayeredPane上,這些項目也會在圖層上以z位置排序。我會建議使用layers.add(child,layer)而不是簡單的add方法。有關該信息,請參見[文檔](http://docs.oracle.com/javase/7/docs/api/javax/swing/JLayeredPane.html)。 – 2013-05-09 06:29:27

回答

1

默認情況下,組件沒有位置或大小,這意味着如果將它們添加到沒有佈局管理器的容器(如JLayeredPane),它們將不會顯示。

因爲JLayeredPane沒有佈局管理器,所以您必須接管向組件提供位置和大小信息的責任。

嘗試使用setSize,setLocation和/或setBounds

查看How to use layered panes的示例瞭解更多詳情。

+0

*「嘗試使用..」* ..一個佈局管理器!僅僅因爲它默認沒有一個,並不意味着你不能設置一個。 – 2013-05-09 06:24:08

+0

@AndrewThompson大聲笑......真的,上下文會很好 – MadProgrammer 2013-05-09 06:25:47

+0

@AndrewThompson對我(小)的頭腦,'JLayeredPane'很適合拖動東西,但這只是我... – MadProgrammer 2013-05-09 06:27:03