2015-11-03 69 views
2

我的任务是“识别并修复任何错误”。该图片来自Java教科书,显示了Swing结构的组织结构。这对我来说看起来很好,我没有看到任何问题。Java Swing组织

有人可以解释一下吗?

JPanel应该放在JComponent之前吗?

enter image description here

+2

只要看看API。 –

+0

我不知道我会在API中找到该位置。 – Nic

+0

API中的每个类条目都在顶部列出了它的层次结构 - 您不能错过它。认真。例如[The JFrame API entry](http://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html)。只要看看 - 这是在黑色和白色。 –

回答

3

这显然是一个有趣的问题,通过事实,没有人注意到这个问题,到目前为止,有相当经验的开发者评论你的问题表示。

问题是ComponentContainer之间的箭头指向了错误的方向,但由于垂直放置遵循将基类置于子类之上的典型模式,因此很容易忽视。我不会打电话给那些以易于忽略的图形细节为重点的问题。

除此之外,您可以通过在继承层次树中插入AbstractButtonJTextComponent并添加更多缺少的前端类来改进树,但考虑到图形是简化树,缺少这些类并不是真正的错误。

您可以将树与实际继承树in the official documentation进行比较。

1

Swing中这个“破碎”层次结构的原因是所有组件都是从AWT的Container中派生出来的,因此像add(Component)这些没有意义的方法是历史性的。

Swing最初是作为第三方JAR发布的,需要下载到JDK 1.1浏览器并在此工作。所以它需要在JDK 1.1 AWT之上工作。这是他们为实现这一目标而设计的。

现代GUI框架,猿Swing例如或者JavaFX跳过了这种妥协,这是Swing的难点之一。