关闭JFrame窗口后启动事件

时间:2012-11-26 13:29:44

标签: java swing user-interface jframe

关闭窗口后,我想创建一个类的对象并执行任务。 关闭后:

setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

我能做什么才能在窗口关闭后立即开始新操作? 请帮忙。

3 个答案:

答案 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);

  

我想创建一个类的对象并执行任务