我被教导要添加它以始终将其添加到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);
}
答案 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());