【发布时间】:2014-07-07 12:30:56
【问题描述】:
在我的程序中,如果发生操作,它会打开一个窗口。在我在这个窗口中填写了信息,并输入了一个按钮后,窗口 dispose()。
该窗口在我的主程序之外的程序中被拾取,但是当我关闭此窗口时,我的主程序停止。我怎样才能防止这种情况发生?
感谢您的帮助!
【问题讨论】:
标签: java swing user-interface dispose
在我的程序中,如果发生操作,它会打开一个窗口。在我在这个窗口中填写了信息,并输入了一个按钮后,窗口 dispose()。
该窗口在我的主程序之外的程序中被拾取,但是当我关闭此窗口时,我的主程序停止。我怎样才能防止这种情况发生?
感谢您的帮助!
【问题讨论】:
标签: java swing user-interface dispose
可以将第二帧的defalaultCloseOperation属性设置为DO_NOTHING_ON_CLOSE或DISPOSE_ON_CLOSE
甚至不要使用两个框架。使用模态JDialog 代替辅助框架。在How to Use Dialogs 上查看更多信息。阅读有关Modality 的更多信息。如需阅读,请参阅The Use of Multiple JFrames, Good/Bad Practice?
忘记数字 1。直接进入 2。
【讨论】:
如果使用 JFrame 或对其进行扩展,您可以使用 setDefaultCloseOperation() 方法,例如:
frame.setDefaultCloseOperation(HIDE_ON_CLOSE);
// or
frame.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
【讨论】:
dispose 命令来自 AWT 捆绑包,当您尝试使用 AWT 命令“关闭”摆动窗口时,这可能会导致问题。
您可以使用以下命令关闭窗口:
windowName.setVisable(false);
windowName 是代表窗口的对象的名称。如果你正在扩展一个类,并且没有对象,你可以使用this
有关处置方法的更多信息: “通常 java.awt.Window.dispose() 用于 GUI 组件,该组件是 Window 的子类,以用于特定的 GUI Window 对象(和 它的孩子)以正确释放和销毁本机 UI 资源(例如 作为屏幕)。垃圾收集(以及最终退出 整个 VM) 可能由于 dispose() 而发生,但不是直接发生 与 dispose() 调用本身连接。” 来自:https://www.java.net/node/684412
【讨论】:
windowName.setVisable(false);
似乎不是一个好的选择。如果用户想退出程序怎么办?
【讨论】: