Java 关闭JFrame窗口后启动事件
关闭窗口后,我想创建一个类的对象并执行一个任务。 结束后:Java 关闭JFrame窗口后启动事件,java,swing,user-interface,jframe,Java,Swing,User Interface,Jframe,关闭窗口后,我想创建一个类的对象并执行一个任务。 结束后: setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 我可以做些什么,以便在窗口关闭后立即启动新操作? 请帮忙。打电话 frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); 并为关闭事件注册侦听器: frame.addWindowListener(new WindowAdapter() {
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
我可以做些什么,以便在窗口关闭后立即启动新操作?
请帮忙。打电话
frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
并为关闭事件注册侦听器:
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
JFrame frame = (JFrame)e.getSource();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// additional code here
}
});
召唤
并为关闭事件注册侦听器:
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
JFrame frame = (JFrame)e.getSource();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// additional code here
}
});
看
simplair asHIDE\u ON\u CLOSE
setVisible(false)代码>,容器是可重用的,可以通过调用
setVisible(true)来显示它代码>
- 或者您可以调用
,这意味着此容器不可重复使用,在调用dispose()
setVisible(true)之前,必须检查
代码>isDisplayable()
- 看,也许这是一个合适的方式
simplair asHIDE\u ON\u CLOSE
setVisible(false)代码>,容器是可重用的,可以通过调用
setVisible(true)来显示它代码>
- 或者您可以调用
,这意味着此容器不可重复使用,在调用dispose()
setVisible(true)之前,必须检查
代码>isDisplayable()
- 看,也许这是一个合适的方式
JFrame
时,会发生以下事件:
- 调用在该帧上注册的
s的WindowListener
方法windowClosing
- 然后,触发
指定的操作setDefaultCloseOperation
setVisible(false)
的效果相同。帧变为不可见,可以通过调用setVisible(true)
再次显示
封闭处置
与在框架上调用dispose()
的效果相同。这种效果有点类似于HIDE_ON_CLOSE,不同之处在于这次,框架使用的操作系统资源被释放。如果要使框架再次显示,仍然可以再次调用setVisible(true)
调用在该帧上注册的WindowListener
s的windowClosed
方法
另外,请注意,当最后一个可显示的窗口被释放时
关门退出
与调用System.exit()
的效果相同
因此,如果您想完全控制用户尝试关闭帧时发生的情况,请将默认操作设置为在关闭时不执行任何操作,并将代码放入
WindowListener的windowClosing
方法中。在这里,您可以调用setVisible(false)、dispose()或System.exit(),具体取决于您想要实现的目标
您还可以将默认操作设置为隐藏、处置或关闭时退出,并将代码放入WindowListener的windowClosing
方法中。在这种情况下,将首先调用侦听器,然后执行所选的操作,不管发生什么
最后,您还可以将默认操作设置为DISPOSE ON\u CLOSE,并将代码放入WindowListener的windowClosed
方法中。这样,首先释放帧(它从屏幕上消失),然后执行代码。当用户尝试关闭JFrame
时,会发生以下事件:
- 调用在该帧上注册的
WindowListener
s的windowClosing
方法
- 然后,触发
setDefaultCloseOperation
指定的操作
有4种默认关闭操作:
不要关门
……什么也不做。框架仍然在这里,很高兴地忽略了您关闭它的请求
隐匿
与在帧上调用setVisible(false)
的效果相同。帧变为不可见,可以通过调用setVisible(true)
再次显示
封闭处置
与在框架上调用dispose()
的效果相同。这种效果有点类似于HIDE_ON_CLOSE,不同之处在于这次,框架使用的操作系统资源被释放。如果要使框架再次显示,仍然可以再次调用setVisible(true)
调用在该帧上注册的WindowListener
s的windowClosed
方法
另外,请注意,当最后一个可显示的窗口被释放时
关门退出
与调用System.exit()
的效果相同
因此,如果您想完全控制用户尝试关闭帧时发生的情况,请将默认操作设置为在关闭时不执行任何操作,并将代码放入WindowListener的windowClosing
方法中。在这里,您可以调用setVisible(false)、dispose()或System.exit(),具体取决于您想要实现的目标
您还可以将默认操作设置为隐藏、处置或关闭时退出,并将代码放入WindowListener的windowClosing
方法中。在这种情况下,将首先调用侦听器,然后执行所选的操作,不管发生什么
最后,您还可以将默认操作设置为DISPOSE ON\u CLOSE,并将代码放入WindowListener的windowClosed
方法中。这样,首先处理帧(它从屏幕上消失),然后执行代码。除了添加侦听器之外,还有其他方法吗?我认为您还需要添加System.exit(0),因为joey的当前实现就是这样做的。@W.Goeman:这是通过frame.setDefaultCloseOperation(JFrame.exit\u ON\u CLOSE)完成的代码>@Joey Rohan为什么不使用li