天天看点

【Java Swing学习笔记】- 顶层容器 - JFrame 窗口Swing顶层容器 - JFrame 窗口

Swing顶层容器 - JFrame 窗口

系统:Win10

JDK:1.8.0_121

IDE:IntelliJ IDEA 2017.3.7

1. 概述

JFrame:一个窗口,通常包含有标题、图标、操作按钮(关闭、最小化、最大化),还可以为窗口添加菜单栏、工具栏等。一个进程中可以创建多个窗口,并可在适当时候进行显示、隐藏 或 销毁

JFrame 常用构造方法:

/**
 * 参数说明:
 *     title: 窗口标题
 */
JFrame()

JFrame(String title)

JFrame 常用方法:
// 设置窗口的 标题
void setTitle(String title)

// 设置窗口的 图标
void setIconImage(Image image)

// 设置窗口的 宽高
void setSize(int width, int height)
void setSize(Dimension d)

/**
 * 设置窗口关闭按钮点击后的默认操作, 参考值:
 *     WindowConstants.DO_NOTHING_ON_CLOSE: 不执行任何操作。
 *     WindowConstants.HIDE_ON_CLOSE: 隐藏窗口(不会结束进程), 再次调用 setVisible(true) 将再次显示。
 *     WindowConstants.DISPOSE_ON_CLOSE: 销毁窗口, 如果所有可显示的窗口都被 DISPOSE, 则可能会自动结束进程。
 *     WindowConstants.EXIT_ON_CLOSE: 退出进程。
 */
void setDefaultCloseOperation(int operation)

// 设置窗口是否可放大缩小
void setResizable(boolean resizable)

// 设置窗口的 位置(相对于屏幕左上角)
void setLocation(int x, int y)
void setLocation(Point p)

// 设置窗口的 位置 和 宽高
void setBounds(int x, int y, int width, int height)
void setBounds(Rectangle rect)

// 获取窗口的位置坐标(相对于屏幕坐标空间)
Point getLocationOnScreen()
// 获取窗口的位置坐标(相对于父级坐标空间, 窗口的父级一般就是屏幕)
Point getLocation()

/**
 * 设置窗口的相对位置。
 * 如果 comp 整个显示区域在屏幕内, 则将窗口放置到 comp 的中心;
 * 如果 comp 显示区域有部分不在屏幕内, 则将该窗口放置在最接近 comp 中心的一侧;
 * comp 为 null, 表示将窗口放置到屏幕中心。
 */
void setLocationRelativeTo(Component comp)

// 设置将窗口 置顶 显示
void setAlwaysOnTop(boolean alwaysOnTop)

// 设置窗口的内容面板
void setContentPane(Container contentPane)

// 设置窗口是否可见, 窗口对象刚创建和添加相应组件后通过 setVisible(true) 绘制窗口, 其内部组件可能要此时才有宽高值
void setVisible(boolean b)

// 判断窗口是否处于显示状态
boolean isShowing()

// 销毁窗口, 释放窗口及其所有子组件占用的资源, 之后再次调用 setVisible(true) 将会重构窗口
void dispose()

// 调整窗口的大小, 以适合其子组件的首选大小和布局。
void pack()
           

2.代码实例

代码如下:

public class Demo01 extends JFrame {
    public Demo01() {
        this.setTitle("Demo01"); // 设置窗口标题
        this.setSize(400, 300); // 设置窗口显示大小
        this.setIconImage(ImageUtil.LOGO_ICON); // 设置窗口图标
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置窗口默认关闭操作
        this.setLocationRelativeTo(null); // 相对屏幕居中
        this.setVisible(true); // 设置窗口可见
    }

    public static void main(String[] args) {
        new Demo01();
    }
}
           

运行结果:

【Java Swing学习笔记】- 顶层容器 - JFrame 窗口Swing顶层容器 - JFrame 窗口

设置 Look And Feel(beautyeye),后续的测试样例均使用该LAF

public class Demo01 extends JFrame {
    public Demo01() {
        this.setTitle("Demo01"); // 设置窗口标题
        this.setSize(400, 300); // 设置窗口显示大小
        this.setIconImage(ImageUtil.LOGO_ICON); // 设置窗口图标
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置窗口默认关闭操作
        this.setLocationRelativeTo(null); // 相对屏幕居中
        this.setVisible(true); // 设置窗口可见
    }

    public static void main(String[] args) {
        try {
            BeautyEyeLNFHelper.frameBorderStyle = BeautyEyeLNFHelper.FrameBorderStyle.osLookAndFeelDecorated;
            UIManager.put("RootPane.setupButtonVisible", false); // 隐藏设置按钮
            org.beautyeye.BeautyEyeLNFHelper.launchBeautyEyeLNF();
        } catch (Exception e) {
        }
        new Demo01();
    }
}
           

运行结果:

【Java Swing学习笔记】- 顶层容器 - JFrame 窗口Swing顶层容器 - JFrame 窗口