什么是setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);?

时间:2015-08-18 16:09:05

标签: java jframe window dimension

我被教导要添加它以始终将其添加到jframe的run方法中,但与不使用它相比,它不会改变任何东西。

我想知道的是,当你把它留下来会发生什么?

由于

@Override
public void run() {
    frame = new JFrame(title);
    frame.setPreferredSize(new Dimension(400, 200));
    //frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    createComponents(frame.getContentPane());
    frame.pack();
    frame.setVisible(true);
}

3 个答案:

答案 0 :(得分:3)

您的应用程序流程仍将保留在内存中。

这是来自官方文件:

-DO_NOTHING_ON_CLOSE(在WindowConstants中定义):不要做任何事情;要求程序在已注册的WindowListener对象的windowClosing方法中处理操作。

-HIDE_ON_CLOSE(在WindowConstants中定义):在调用任何已注册的WindowListener对象后自动隐藏框架。

-DISPOSE_ON_CLOSE(在WindowConstants中定义):在调用任何已注册的WindowListener对象后自动隐藏和处置框架。

-EXIT_ON_CLOSE(在JFrame中定义):使用System exit方法退出应用程序。仅在应用程序中使用它。

答案 1 :(得分:0)

setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE)用于关闭JFrame和Java进程。使用不带setDefaultCloseOperaton的JFrame示例程序对其进行测试。单击关闭的窗口关闭您的jframe。检查你的任务管理器/ top命令,你会发现java进程仍然会运行。

答案 2 :(得分:0)

我知道这是一个老问题,但我要教的是在类中创建一个扩展JFrame的内部类。

内部类应该扩展WindowAdapter,你应该覆盖windowClosing方法,我通常只是把System.exit(0);在它。

然后在JFrame类的构造函数中添加以下行: this.addWindowListener(new MyWindowAdapterClass());