我的任務是「識別並修復任何錯誤」。該圖片來自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)。只要看看 - 這是在黑色和白色。 –