点击JFrame右上角的关闭(x)按钮的程序化等价物是什么?
有dispose()
方法,但这不是一回事,因为JFrame可以设置为在关闭时执行几个不同的事情(更不用说是否涉及WindowListener)
答案 0 :(得分:16)
告诉组件调度事件。在这种情况下,您希望它发送一个Window Closing事件。
private void exit() {
this.dispatchEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
}
答案 1 :(得分:2)
当您在JFrame上点击x时,系统可以设置为执行各种操作。默认情况下,窗口只是用setVisible(false)隐藏,我相信。
您可以设置框架以在关闭时执行不同的操作 - 您可以根据setDefaultCloseOperation处理,隐藏或调用代码。以下是选项:
DO_NOTHING_ON_CLOSE:什么都不做;要求程序在已注册的WindowListener对象的windowClosing方法中处理操作。
HIDE_ON_CLOSE:在调用任何已注册的WindowListener对象后自动隐藏框架。
DISPOSE_ON_CLOSE:在调用任何已注册的WindowListener对象后自动隐藏和处理框架。
EXIT_ON_CLOSE:使用系统退出方法退出应用程序。仅在应用程序中使用它。
但我认为你所追求的是setVisible(false)。
答案 2 :(得分:0)
您必须将调用插入到AWT消息队列中,以便所有时间都正确发生,否则它将不会调度正确的事件序列,尤其是在多线程程序中。
public void closeWindow()
{
if(awtWindow_ != null) {
EventQueue.invokeLater(new Runnable() {
public void run() {
awtWindow_.dispatchEvent(new WindowEvent(awtWindow_, WindowEvent.WINDOW_CLOSING));
}
});
}
}