我的任务是“识别并修复任何错误”。该图片来自Java教科书,显示了Swing结构的组织结构。这对我来说看起来很好,我没有看到任何问题。Java Swing组织
有人可以解释一下吗?
JPanel应该放在JComponent之前吗?
我的任务是“识别并修复任何错误”。该图片来自Java教科书,显示了Swing结构的组织结构。这对我来说看起来很好,我没有看到任何问题。Java Swing组织
有人可以解释一下吗?
JPanel应该放在JComponent之前吗?
这显然是一个有趣的问题,通过事实,没有人注意到这个问题,到目前为止,有相当经验的开发者评论你的问题表示。
问题是Component
和Container
之间的箭头指向了错误的方向,但由于垂直放置遵循将基类置于子类之上的典型模式,因此很容易忽视。我不会打电话给那些以易于忽略的图形细节为重点的问题。
除此之外,您可以通过在继承层次树中插入AbstractButton
和JTextComponent
并添加更多缺少的前端类来改进树,但考虑到图形是简化树,缺少这些类并不是真正的错误。
您可以将树与实际继承树in the official documentation进行比较。
Swing中这个“破碎”层次结构的原因是所有组件都是从AWT的Container
中派生出来的,因此像add(Component)
这些没有意义的方法是历史性的。
Swing最初是作为第三方JAR发布的,需要下载到JDK 1.1浏览器并在此工作。所以它需要在JDK 1.1 AWT之上工作。这是他们为实现这一目标而设计的。
现代GUI框架,猿Swing例如或者JavaFX跳过了这种妥协,这是Swing的难点之一。
只要看看API。 –
我不知道我会在API中找到该位置。 – Nic
API中的每个类条目都在顶部列出了它的层次结构 - 您不能错过它。认真。例如[The JFrame API entry](http://docs.oracle.com/javase/8/docs/api/javax/swing/JFrame.html)。只要看看 - 这是在黑色和白色。 –