我知道每个顶级容器都有一些层:
根窗格
图层窗格
内容窗格
玻璃窗
但我不明白根窗格是否是顶层容器本身。
窗格和容器之间有什么关系?实际上,当我返回一个窗格时
getContentPane()
,对象的类型为Container
!
答案 0 :(得分:3)
您还有JFrame
。详细了解How to Use Root Panes。
RootPaneContainer http://java.sun.com/javase/7/docs/api/javax/swing/doc-files/JRootPane-1.gif 来自JRootPane:
“重量级”组件(委托给对等方的组件或主机系统上的本机组件)显示为更暗,更重的盒子。四个重量级JFC / Swing容器(JFrame,JDialog,JWindow和JApplet)与它们扩展的AWT类相关。这四个组件是Swing库中唯一的重量级容器。
答案 1 :(得分:2)
如果你看一下以前的答案或链接,你会发现,在这两行之间,问题的实际答案是:
根窗格不是顶层容器本身,但顶层容器 HAS 是根窗格。
由于所有Swing顶级容器(即JFrame
,JDialog
和JApplet
)都实现了RootPaneContainer
接口,这意味着您可以访问其根目录一般情况下的窗格(无需检查这是JFrame
还是JDialog
....)
关于问题的第二部分,窗格和容器之间的区别,实际上没有区别,窗格是java.awt.Container
(或任何子类,特别是javax.swing.JPanel
)。
对于udnerstand来说重要的是Swing顶级容器(根,内容,玻璃,分层)中存在的各种窗格,为此您必须查看以前答案中发布的链接。