澄清Java Swing中组件类的继承层次结构?

时间:2014-01-15 01:58:59

标签: java swing components jbutton containers

我在Swing上阅读Core Java Volume 1。我很难理解这一段: 首先,作者说

  

组件可放置在容器(如面板)内。容器   可以将自己放在其他容器中,所以类容器   扩展组件。图9.8显示了继承层次结构   部件,

enter image description here

  

注意:不幸的是,继承层次结构有点不干净   在两个方面。首先,顶级窗口,如JFrame,是   容器的子类,因此Component,但它们不能   放在其他容器内。而且,JComponent是一个   Container的子类,而不是Component。因此可以添加其他   将组件放入JButton(但是,那些组件不会   显示)。

对我来说,他在图片前后的陈述似乎都是相反的。 我也无法清楚地了解作者在这里想说些什么。 如果有人可以用一个例子或其他东西来详细说明,那将是有用的 感谢

1 个答案:

答案 0 :(得分:0)

正如@MadProgrammer在评论中所说,作者强调了对象层次结构告诉你的内容与API可以做什么之间的差异。 JFrame和JDialog是顶级容器。如果仔细查看层次结构,这些顶级容器不会继承JComponent。相反,它们继承自AWT Window,这使得这些顶级容器在摆动时非常特别,并使它们成为重量级的组件。所以这些重量级的顶层容器不能放在另一个容器或组件内。 扩展JComponents的所有组件都是轻量级组件。此时,所有重量轻的部件都可以放在另一个轻质部件或顶层容器内。

如果我错了,请告诉我...... :)