在Swing中,我们有三种可以使用的顶层容器类,它们分别是:JFrame:用来设计类似于Windows系统中的窗口形式的应用程序。JDialog:和JFrame类似,只不过JDialog是用来设计对话框。JApplet:用来设计可以在嵌入在网页中的Java小程序后来加入了JWindow组成四大顶层容器下面讲解四大顶层容器之一JFrame中各面板的层次结构:可以看出,Frame的最底层是RootPane,然后是LayeredPane再上面就是ContentPane最顶层是GlassPane(透明的)现在我们再来看另一张图,从模型的角度来看JFrame的层次:可以看出,其实ContentPane是添加在LayeredPane上的一个控件。而LayeredPane和GlassPane是直接添加在RootPane上的,RootPane直接添加在JFrame上。在Swing中的JFrame窗体与AWT中的Frame窗体有一些不同。JFrame由他的窗体本身加上JRootPane根面板,JLayeredPane层面板,containPane内容面板,glassPane玻璃面板,JMenuBar菜单栏(可选,不包括在内)四部分组成。其中根面板在JRootPane类中实现,层面板在JLayeredPane类中实现,他们都是JComponent的子类。而containPane和glassPane没有专门对应的类。JRootPane:根面板,在建立JFrame时就默认加进来了,覆盖除边框之外的整个表面,其余面板均在它之上,由它管理,默认可见不透明。Swing中的三种顶层容器(JFrame、JDialog、JApplet)都依赖于根面板.你通常不需要了解关于使用Swing组件根面板方面的知识.JLayeredPane:建立在JRootPane(根面板)上,其上有菜单面板JMenuBar和内容面板containPane。对于层面板上的多层,只能把某种容器(比如JPanel)设置为内容面板层,层面板中的其他层都不能设置。使层面板可见用setOpaque()。contentPane:内容面板,向窗体中添加的所有组件都是添加到contentPane中的,如果组件未添加到此层,就不会显示了。其中getContentPane是返回内容面板的引用,默认可见不透明,我们看到的就是内容面板的内容。向层面板添加组件要添加在contentPane这一层。glassPane:该面板位于最上层,默认透明不可见。若将某一容器(比如JPanel)设为玻璃面板,它仍是不可见的,但它不是透明的,这取决于该容器是否是透明的。今天说我们的重点:ContentPane可以看出,这个ContentPane就是默认盛放控件的那个层次,那ContentPane在默认的情况下又是什么呢?我们来看两个方法:JFrame中的getContentPane:publicContainergetContentPane(){returngetRootPane().getContentPane();}JRootPane中的createContentPane:protectedContainercreateContentPane(){JComponentc=newJPanel();…………returnc;}可以明显的看出,默认的ContentPane就是一个JPanel对象