public class JFrameextends Frameimplements WindowConstants, Accessible, RootPaneContainer
java.awt.Frame
的擴展版本,該版本添加了對 JFC/Swing 組件架構的支持。有關使用 JFrame
的面向任務的文檔,請參閱《The Java Tutorial》中的 How to Make Frames 一節。
JFrame
類與 Frame
輕微不兼容。與其他所有 JFC/Swing 頂層容器一樣,JFrame
包含一個 JRootPane
作爲其惟一的子容器。根據規定,根窗格所提供的內容窗格應該包含 JFrame
所顯示的所有非菜單組件。這不同於 AWT Frame
。作爲 add
的便捷方法及其變體,已經重寫了 remove
和 setLayout
,以在必要時將其轉發到 contentPane
。這意味着可以編寫:
frame.add(child);
子級將被添加到 contentPane。內容窗格始終是非 null 的。試圖將其設置爲 null 會導致 JFrame 拋出異常。默認的內容窗格上會設置有 BorderLayout 管理器。有關添加、移除和設置 JFrame
的 LayoutManager
的詳情,請參閱 RootPaneContainer
。
與 Frame
不同,當用戶試圖關閉窗口時,JFrame
知道如何進行響應。用戶關閉窗口時,默認的行爲只是簡單地隱藏 JFrame。要更改默認的行爲,可調用方法 setDefaultCloseOperation(int)
。要使 JFrame
的行爲與 Frame
實例相同,請使用 setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE)
。
有關內容窗格和根窗格提供的其他功能的更多信息,請參閱《The Java Tutorial》中的 Using Top-Level Containers 一節。
在多屏幕環境中,可以在不同的屏幕設備上創建一個 JFrame
。有關更多信息,請參閱 Frame
。
警告:此類的序列化對象與以後的 Swing 版本不兼容。當前序列化支持適用於短期存儲,或適用於在運行相同 Swing 版本的應用程序之間進行 RMI(Remote Method Invocation,遠程方法調用)。從 1.4 版本開始,已在 java.beans
包中添加了支持所有 JavaBeansTM 長期存儲的功能。請參見 XMLEncoder
。