2013-05-09 80 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