JFrame 中 setDefaultCloseOperation() 参数说明
今天在写窗体的时候,发现了这个东西,有点不明白,就查了一下。现在把我所了解到的结果,分享给大家。
查找API 得到的结果,给截图看一下。有点官方,不太明白
接下来给出我的 理解和解释吧!
第一种:DO_NOTHING_ON_CLOSE(在 WindowConstants 中定义):不执行任何操作;要求程序在已注册的 WindowListener 对象的 windowClosing 方法中处理该操作。
在测试中,你会发现,点击 X 关闭不了窗口。不做任何处理。
第二种:HIDE_ON_CLOSE(在 WindowConstants 中定义):调用任意已注册的 WindowListener 对象后自动隐藏该窗体。
测试一下,你会发现,窗口可以关闭,但并不如此,只是按照将程序界面隐藏了。可以打开任务管理器,可以看到一个叫“java.exe”的进程。
我使用的是VScode 在界面会看到程序仍在运行,此时你按F5 是不可以再次运行
程序的,需要先停止。
第三种:DISPOSE_ON_CLOSE(在 WindowConstants 中定义):调用任意已注册 WindowListener 的对象后自动隐藏并释放该窗体。
在测试中,发现和上一个一模一样,实际上 他也是隐藏 并释放该窗体所使用的资源和空间
第四种:EXIT_ON_CLOSE(在 JFrame 中定义):使用 System exit 方法退出应用程序。仅在应用程序中使用。
默认情况下,该值被设置为 HIDE_ON_CLOSE
我也做了代码测试,供大家参考
import javax.swing.JFrame;
import javax.swing.WindowConstants;
public class DefaultCloseOperation extends JFrame{
public DefaultCloseOperation(){
//设置窗体大小
setSize(400,350);
//设置窗体标题
setTitle("DefaultCloseOperation 测试窗口");
}
public static void main(String[] args) {
DefaultCloseOperation frame = new DefaultCloseOperation();
frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);//第一种
frame.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);//第二种
frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);//第三种
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //第四种
frame.setVisible(true); // 使窗体可见
}
}