2010-08-16 71 views

回答

5

您可能會發現查找oracle上的類很有用。例如:

http://download.oracle.com/javase/1.4.2/docs/api/javax/swing/JFrame.html

在那裏,你可以看到JFrame的擴展JComponent的和JContainer。

JComponent是一個可以繪製的基本對象,JContainer對此進行了擴展,以便您可以向其中添加組件。 JPanel和JFrame都可以擴展JComponent,因爲您可以將其添加到它們中。 JFrame提供了一個窗口,而JPanel只是一個放在窗口內的面板。如果這是有道理的。

+3

作爲一個方面說明,繼承鏈對於一些Swing組件來說是荒謬的。它傾向於在IDE中完成代碼完成,並且混亂了javadoc。他們真的需要重寫那個東西 – TheLQ 2010-08-16 22:33:36

+1

我想指出,JFrame不會擴展JComponent或JContainer,而是按照該順序擴展java.awt.Container和java.awt.Component。 – 2013-08-04 03:28:47

+1

@LucasMorgan他們必須讓JFrame對Swing的依賴程度低於我的想象。由於它使用AWT,我想知道是否可以在JApplet中使用JFrame。 – 2015-09-08 15:08:32

17

JFrame和JApplet是頂級容器。如果您希望創建桌面應用程序,那麼您將使用JFrame,如果您計劃在瀏覽器中託管應用程序,則將使用JApplet。

JComponent是所有Swing組件的抽象類,您可以將它用作新組件的基類。 JPanel是一個簡單的可用compoent,你幾乎可以使用任何東西。

由於這是一個有趣的項目,最簡單的方法是使用JPanel,然後將其託管在JFrame或JApplet中。 Netbeans擁有簡單示例的Swing視覺設計師。

38

這些類是Java UI設計的常見擴展點。首先,要意識到他們不一定直接與對方有很大關係,所以試圖找到他們之間的關係可能會適得其反。

JApplet - 讓您編寫將在瀏覽器上下文中運行的代碼的基類,例如交互式網頁。這很酷,但它帶來的限制是它在現實世界中玩的不錯的代價。通常,當您想在網頁中擁有自己的用戶界面時,使用JApplet。我一直在想,爲什麼人們不會利用applet來存儲session的狀態,所以不需要數據庫或cookie。

JComponent - 打算與Swing交互的對象的基類。

JFrame - 用於表示窗口應該有的東西。這包括各種系統事件(如「窗口關閉」)(允許應用程序退出嗎?)的邊框(可調整大小的y/n?),標題欄(應用程序名稱或其他消息),控件(最小化/最大化允許?)。

JPanel - 用於將其他元素聚集在一起的泛型類。這對於使用可視佈局或提供的佈局管理器之一更重要,例如gridbaglayout等。例如,您有一個比您保留的區域大的文本框。將文本框放在滾動窗格中並將該窗格放入JPanel中。然後當你放置JPanel時,就佈局而言它將更易於管理。