我的任务是“识别并修复任何错误”。这张图片来自一本Java教科书,展示了Swing结构的组织。这对我来说很好,我看不出有任何问题。
有人能解释一下吗?
JPanel应该走在JComponent之前吗?

发布于 2015-11-04 00:14:43
这显然是一个刁钻的问题,事实表明,到目前为止还没有人注意到这个问题,并且有相当有经验的开发人员评论你的问题。
问题是Component和Container之间的箭头指向错误的方向,但由于垂直放置遵循将基类放在子类之上的典型模式,因此很容易被忽略。我不认为以这种方式关注容易忽略的图形细节是一个严肃的问题。
除此之外,您可以通过将AbstractButton和JTextComponent插入到继承层次结构树中来改进树,并添加更多缺少的前端类,但考虑到该图形是简化的树,缺少这些类并不是真正的错误。
您可以将该树与实际的继承树in the official documentation进行比较。
发布于 2015-11-04 11:29:56
在Swing中,所有组件都是从AWT的Container派生的,因此具有像add(Component)这样毫无意义的方法,这种“破碎”的层次结构的原因是历史悠久的。
Swing最初是作为第三方JAR发布的,需要下载到JDK 1.1浏览器中并在那里工作。所以它需要工作在JDK 1.1 AWT之上。这就是他们选择的实现这一点的设计。
类似Swing的现代图形用户界面框架,例如Codename One或JavaFX,跳过了这种折衷,这是Swing的痛点之一。
https://stackoverflow.com/questions/33490404
复制相似问题