关闭窗口 - 但不要停止程序 - JAVA

时间:2014-05-19 13:50:18

标签: java swing user-interface dispose

在我的程序中,如果发生了某个操作,它会打开一个窗口。在我在此窗口中填写信息并输入按钮后,窗口dispose()。

在我的主程序之外的程序中拾取窗口,但是当我关闭此窗口时,我的主程序停止。我怎样才能防止这种情况发生?

感谢您的帮助!

4 个答案:

答案 0 :(得分:3)

  1. 您可以将第二帧的defalaultCloseOperation属性设置为DO_NOTHING_ON_CLOSEDISPOSE_ON_CLOSE

  2. 甚至不使用两个框架。使用模态JDialog代替辅助框架。点击How to Use Dialogs了解更多信息。详细了解Modality。如需好好阅读,请参阅The Use of Multiple JFrames, Good/Bad Practice?

  3. 忘记编号1.然后直接进入2.

答案 1 :(得分:3)

如果使用JFrame或扩展它,您可以使用setDefaultCloseOperation()方法,如:

frame.setDefaultCloseOperation(HIDE_ON_CLOSE);
// or
frame.setDefaultCloseOperation(DISPOSE_ON_CLOSE);

答案 2 :(得分:0)

dispose命令来自AWT捆绑包,这可能会导致问题,因为您正在尝试关闭"带有AWT命令的挥杆窗口。

您可以使用以下命令关闭窗口:

windowName.setVisable(false);

windowName是表示窗口的对象的名称。如果要扩展类,并且没有对象,则可以使用this

有关Dispose方法的更多信息: "通常,java.awt.Window.dispose()用于GUI组件 Window的子类,用于特定的GUI Window对象(和 它的孩子们)正确地释放和销毁本机UI资源(例如 作为屏幕)。垃圾收集(并最终退出 整个VM)可能由于dispose()而发生,但不是直接发生的 与dispose()调用本身连接。" 发件人:https://www.java.net/node/684412

答案 3 :(得分:0)

windowName.setVisable(false);

似乎不是一个好选择。如果用户想要退出程序该怎么办?

检查此问题 - How to hide a JFrame in system tray of taskbar