JFrame中有关于DefaultCloseOperation的使用及参数说明(含源码阅读)

简介: 在做拼图小游戏的时候,遇到了一个很有趣的函数——DefaultCloseOperation,当我们看到DefaultCloseOperation(3)的时候就会想为什么括号内的数字是3,而不是别的数字,本文就带你详细了解一下该函数以及其参数含义

一、前言


在做拼图小游戏的时候,遇到了一个很有趣的函数——DefaultCloseOperation,当我们看到DefaultCloseOperation(3)的时候就会想为什么括号内的数字是3,而不是别的数字,本文就带你详细了解一下该函数以及其参数含义


二、使用说明


JFrame loginJFrame = new JFrame();
loginJFrame.DefaultCloseOperation(3)

5f1a14aa5cf84e1fb5550a006622ac91.png


在窗口弹出的时候程序显示一直在运行中,当我们点击×关闭窗口时,程序自动结束


三、源码阅读


我们选中DefaultCloseOperation后用Ctrl+B跟进查看源码


a8e5013ee7eb4a1dbce71ca531d5a55b.png


然后再选中下图的红框继续使用用Ctrl+B跟进


302c81481b504f77b5bd150661b6a100.png


在源码中我们就能看到参数的含义了


1b158f1d01e14dc897c269206d9c0aa2.png

a989b0b41aed4a1e9cfde4f8b0cc55a7.png


四、不同参数含义


1.DefaultCloseOperation(0)


如果括号内的参数为0的话,源码中给出我们的解释是:DO_NOTHING_ON_CLOSE,也就是说如果我们点击关闭窗口的话是没有反应的,要结束程序才能关闭窗口,我们来实现一下


import javax.swing.*;
public class GameJFrame extends JFrame {
    public  GameJFrame(){
        //设置界面大小
        this.setSize(603,680);
        //设置标题
        this.setTitle("拼图小游戏 V1.0");
        //设置永远置顶
        this.setAlwaysOnTop(true);
        this.setDefaultCloseOperation(0);
        //设置界面居中
        this.setLocationRelativeTo(null);
        //设置界面可视化
        this.setVisible(true);
    }
}
public class APP {
    public static void main(String[] args) {
         new GameJFrame();
    }
}

9592aa09717c49f9aa17c5194770d02d.png

e5f9373e147c4886bc1efe675589d389.png


2.DefaultCloseOperation(1)


如果括号内的参数为1的话,源码中给出我们的解释是:HIDE_ON_CLOSE,也就是说当我们关闭窗口的时候,程序并不会结束运行,并且不结束进程,窗体是被我们隐藏了,所以在这时候我们无法调试代码,我们来实现一下(代码同上)


bac5c630abf84392abb0caf00695c38f.png

2a3964b3e4004a8886ef70ba82bf4fd0.png


3.DefaultCloseOperation(2)


如果括号内的参数为1的话,源码中给出我们的解释是:DISPOSE_ON_CLOSE,与上一个DefaultCloseOperation(1)不同的是,这个参数不会让进程隐藏,它会让继续运行应用程序,释放了窗体中占用的资源


bac5c630abf84392abb0caf00695c38f.png

2a3964b3e4004a8886ef70ba82bf4fd0.png


4.DefaultCloseOperation(3)


如果括号内的参数为1的话,源码中给出我们的解释是:EXIT_ON_CLOSE,也就是说当窗口关闭的时候,程序也就停止运行了


5071caa2385d4ea88e73254a66843dac.png

52240e2cc4eb4520b753a72b01320812.png


五、其它写法


如果不想在括号内写数字的话,使用对应的文字的效果也一样,如下表


数字为参数 单词为参数
DefaultCloseOperation(0) WindowConstants.DO_NOTHING_ON_CLOSE
DefaultCloseOperation(1) WindowConstants.HIDE_ON_CLOSE
DefaultCloseOperation(2) WindowConstants.DISPOSE_ON_CLOSE
DefaultCloseOperation(3) WindowConstants.EXIT_ON_CLOSE


六、结语


如果怕自己看不懂括号内的数字的话,可以加个注释或者将单词作为参数,这样更加便于理解,只是代码相对没有这么简洁,所以读者在选择写法的时候可以自行选择

相关文章
|
Java Spring
【Java用法】Spring之@Nullable和@NotNull注释的使用
【Java用法】Spring之@Nullable和@NotNull注释的使用
309 0
|
3月前
|
设计模式 开发者 UED
Flutter笔记:DefaultTextStyle和DefaultTextHeightBehavior解读
Flutter笔记:DefaultTextStyle和DefaultTextHeightBehavior解读
55 0
A module cannot have multiple default exports.是、关闭Vetur扩展,或者重启项目,神奇的bug,复制代码造成的
A module cannot have multiple default exports.是、关闭Vetur扩展,或者重启项目,神奇的bug,复制代码造成的
|
6月前
LabVIEW中使用Get LV Class Default Value 出现错误1498
LabVIEW中使用Get LV Class Default Value 出现错误1498
47 1
|
C# 数据库
基于C#的ArcEngine二次开发45:属性值设置中的DBNull、null和default
基于C#的ArcEngine二次开发45:属性值设置中的DBNull、null和default
基于C#的ArcEngine二次开发45:属性值设置中的DBNull、null和default
|
Java 数据安全/隐私保护 开发者
Action 和 result 配置详解 | 学习笔记
快速学习 Action 和 result 配置详解,介绍了 Action 和 result 配置详解系统机制, 以及在实际应用过程中如何使用。
Action 和 result 配置详解 | 学习笔记
|
JavaScript
export ,export default 和 import 区别 以及用法
export ,export default 和 import 区别 以及用法
|
机器人
DefaultRobotHWSim::initSim函数详解
DefaultRobotHWSim::initSim函数详解
DefaultRobotHWSim::initSim函数详解
Kyro - 找不到 DefaultInstantiatorStrategy 类
Kyro - 找不到 DefaultInstantiatorStrategy 类
151 0