public class JFrame
extends 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与getContentPane()】在多屏幕环境中,可以在不同的屏幕设备上创建一个
JFrame
。有关更多信息,请参阅 Frame
。警告:此类的序列化对象与以后的 Swing 版本不兼容。当前序列化支持适用于短期存储,或适用于在运行相同 Swing 版本的应用程序之间进行 RMI(Remote Method Invocation,远程方法调用)。从 1.4 版本开始,已在
java.beans
包中添加了支持所有 JavaBeansTM 长期存储的功能。请参见 XMLEncoder
。