关闭窗口后,我想创建一个类的对象并执行任务。 关闭后:
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
我能做什么才能在窗口关闭后立即开始新操作? 请帮忙。
答案 0 :(得分:2)
当用户尝试关闭JFrame
时,会发生以下事件:
windowClosing
的{{1}}方法。WindowListener
指定的操作。有4个默认关闭操作:
......什么都不做。框架仍然在这里,高兴地忽略了你关闭它的请求。
与在帧上调用setDefaultCloseOperation
的效果相同。框架变得不可见,并且可以通过调用setVisible(false)
再次显示。
与在帧上调用setVisible(true)
的效果相同。效果有点类似于HIDE_ON_CLOSE,不同之处在于此时帧的OS资源被释放。如果您想让相框再次显示,您仍然可以再次致电dispose()
。
调用在该帧上注册的setVisible(true)
的{{1}}方法。
另请注意,当最后一个可显示窗口被丢弃时,your program may terminate。
与调用windowClosed
相同的效果。
因此,如果您希望完全控制用户尝试关闭框架时发生的情况,请将默认操作设置为DO_NOTHING_ON_CLOSE,并将代码放入WindowListener
System.exit()
方法中。在那里,您可以调用setVisible(false),dispose()或System.exit(),具体取决于您想要实现的目标。
您还可以将默认操作设置为在关闭时隐藏,处置或退出,并将代码放在windowClosing
的{{1}}方法中。在这种情况下,将首先调用侦听器,然后执行所选操作,无论如何。
最后,您还可以将默认操作设置为DISPOSE_ON_CLOSE,并将代码放在WindowListener
的{{1}}方法中。这样,首先处理帧(它从屏幕上消失),然后执行代码。
答案 1 :(得分:1)
呼叫
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
}
});
答案 2 :(得分:1)
After i close my window,i want to create an object of a class and preform a task.
看看
HIDE_ON_CLOSE
simplair为setVisible(false);
,容器为re_usable,可以通过调用setVisible(true);
来显示
或者您可以致电dispose()
,这意味着此容器不可重新使用,必须先检查isDisplayable()
,然后再致电setVisible(true);
我想创建一个类的对象并执行任务