在Swing中,根窗格和顶级容器之间有什么区别?

时间:2010-05-17 15:17:00

标签: swing panes

我知道每个顶级容器都有一些层:

  

根窗格
  图层窗格
  内容窗格
  玻璃窗

但我不明白根窗格是否是顶层容器本身。

窗格和容器之间有什么关系?实际上,当我返回一个窗格时 getContentPane(),对象的类型为Container

2 个答案:

答案 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顶级容器(即JFrameJDialogJApplet)都实现了RootPaneContainer接口,这意味着您可以访问其根目录一般情况下的窗格(无需检查这是JFrame还是JDialog ....)

关于问题的第二部分,窗格和容器之间的区别,实际上没有区别,窗格是java.awt.Container(或任何子类,特别是javax.swing.JPanel)。

对于udnerstand来说重要的是Swing顶级容器(根,内容,玻璃,分层)中存在的各种窗格,为此您必须查看以前答案中发布的链接。