javax.swing.JFrame介绍

javax.swing.JFrame介绍

JFrame

简介

译自https://docs.oracle.com/javase/8/docs/api/

这是 Java 中 java.awt.Frame 的扩展版本,增加了对 JFC/Swing 组件架构的支持。关于如何使用 JFrame 的任务导向文档,可以在《Java 教程》的“如何创建窗口”部分找到。

JFrame 类与 Frame 类有一些不兼容之处。与所有其他 JFC/Swing 顶层容器一样,JFrame 将 JRootPane 作为其唯一的子组件。由根窗格提供的内容窗格(Content Pane)通常应包含 JFrame 所显示的所有非菜单组件。这与 AWT 中的 Frame 有所不同。

为了方便开发,JFrame 类重写了 add、remove 和 setLayout 方法,使它们能够将调用委托给内容窗格的对应方法。例如,您可以通过以下方式将子组件添加到一个框架中:

frame.add(child);

子组件将被添加到内容窗格(ContentPane)中。内容窗格始终不为空,若尝试将其设置为 null,JFrame 会抛出异常。默认的内容窗格使用 BorderLayout 布局管理器。有关向 JFrame 添加、移除组件以及设置布局管理器的详细信息,请参考 RootPaneContainer 的相关文档。

与 Frame 不同,JFrame 提供了一种机制来响应用户关闭窗口的操作。默认情况下,当用户关闭窗口时,JFrame 的行为是将窗口隐藏。

如果想更改这种默认行为,可以调用 setDefaultCloseOperation(int) 方法。例如,如果希望 JFrame 的行为与 Frame 实例相同,可以使用 setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE)。

有关内容窗格及根窗格提供的其他功能的详细信息,请参阅《Java 教程》的“使用顶层容器”部分。

在多屏幕环境中,可以在不同的屏幕设备上创建一个 JFrame。更多信息请参考 Frame 类的相关文档。

注意:Swing 不是线程安全的。有关更多信息,请查看 Swing 的线程策略说明。

注意:此类的序列化对象可能与未来的 Swing 版本不兼容。当前的序列化支持适用于短期存储或在运行相同 Swing 版本的应用程序之间进行 RMI(远程方法调用)。从 Java 1.4 开始,java.beans 包添加了对所有 JavaBeans™ 的长期存储支持。详情请参阅 XMLEncoder。

JFrame与Frame

JFrame继承了Frame,很多方法在Frame中定义。

JRootPane

JRootPane是JFrame的一个字段:

protected JRootPane rootPane;

JRootPane 是 JFrame 的核心组件,负责管理窗口的基本结构,包括内容窗格(contentPane)、菜单栏、标题栏等:

/** The menu bar. */

protected JMenuBar menuBar;

/** The content pane. */

protected Container contentPane;

/** The layered pane that manages the menu bar and content pane. */

protected JLayeredPane layeredPane;

/**

* The glass pane that overlays the menu bar and content pane,

* so it can intercept mouse movements and such.

*/

protected Component glassPane;

/**

* The button that gets activated when the pane has the focus and

* a UI-specific action like pressing the Enter key occurs.

*/

protected JButton defaultButton;

/**

* Whether or not true double buffering should be used. This is typically

* true, but may be set to false in special situations. For example,

* heavy weight popups (backed by a window) set this to false.

*/

boolean useTrueDoubleBuffering = true;

WindowConstants

JFrame实现了WindowConstants接口:

public interface WindowConstants

{

public static final int DO_NOTHING_ON_CLOSE = 0;

public static final int HIDE_ON_CLOSE = 1;

public static final int DISPOSE_ON_CLOSE = 2;

public static final int EXIT_ON_CLOSE = 3;

}

这使得可以通过JFrame.xxxx来访问上面的常量。

常用方法参考

以下是 JFrame 类中常用的方法总结(ChatGPT生成):

1. 窗口操作相关方法

setDefaultCloseOperation(int operation)设置用户关闭窗口时的默认操作。例如:

WindowConstants.EXIT_ON_CLOSE:关闭程序。

WindowConstants.HIDE_ON_CLOSE:隐藏窗口(默认)。

WindowConstants.DO_NOTHING_ON_CLOSE:不执行任何操作。

setVisible(boolean b)显示或隐藏窗口。

setVisible(true):显示窗口。

setVisible(false):隐藏窗口。

dispose()释放窗口占用的资源。

pack()根据窗口内组件的大小自动调整窗口大小。

2. 组件管理相关方法

add(Component comp)将组件添加到窗口的 内容窗格(ContentPane)。

remove(Component comp)从窗口的内容窗格中移除指定组件。

setLayout(LayoutManager manager)设置内容窗格的布局管理器。

getContentPane()获取 JFrame 的内容窗格。

setContentPane(Container contentPane)设置一个新的内容窗格。

3. 窗口属性设置方法

setTitle(String title)设置窗口的标题。

setSize(int width, int height)设置窗口的宽度和高度。

setBounds(int x, int y, int width, int height)设置窗口的位置和大小。

setResizable(boolean resizable)设置窗口是否可以调整大小。

setLocation(int x, int y)设置窗口的显示位置。

setLocationRelativeTo(Component c)将窗口相对于指定组件居中显示。若传入 null,窗口会居中显示在屏幕上。

4. 菜单栏相关方法

setJMenuBar(JMenuBar menuBar)设置窗口的菜单栏。

getJMenuBar()获取窗口的菜单栏。

5. 其他方法

setIconImage(Image image)设置窗口图标。

getRootPane()获取窗口的根窗格(JRootPane)。

相关文章

撰写标题和公众号模板:刷爆朋友圈的绝妙技巧!快速完成攻略揭秘!
02年韩国世界杯:激情燃烧的岁月,足球与梦想的交织历程
梦幻西游:天神套装为何价格高昂?解析数据背后的秘密!