0

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

setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

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

4

3 回答 3

2

当用户尝试关闭 aJFrame时,会发生以下事件:

  • 调用在该帧上注册的 s的windowClosing方法。WindowListener
  • 然后,setDefaultCloseOperation触发指定的动作。

有 4 个默认关闭操作:

不做任何事

……什么都不做。框架还在这里,很高兴地忽略了您关闭它的请求。

关闭时隐藏

setVisible(false)与调用框架的效果相同。框架变得不可见,并且可以通过调用再次显示setVisible(true)

关闭时处置

dispose()与调用框架的效果相同。效果有点类似于HIDE_ON_CLOSE,不同的是这次释放了frame使用的OS资源。setVisible(true)如果您想让框架再次出现,您仍然可以再次调用。

调用在该帧上注册的 s的windowClosed方法。WindowListener

另外,请注意,当最后一个可显示窗口被处理掉时,您的程序可能会终止

关闭时退出

与调用相同的效果System.exit()


因此,如果您想完全控制用户尝试关闭框架时发生的情况,请将默认操作设置为 DO_NOTHING_ON_CLOSE,并将您的代码windowClosing放入WindowListener. 在那里,您可以调用 setVisible(false)、dispose() 或 System.exit(),具体取决于您想要实现的目标。

您还可以将默认操作设置为隐藏、处置或关闭时退出,并将您的代码windowClosing放在WindowListener. 在这种情况下,将首先调用侦听器,然后无论如何都会执行所选操作。

最后,您还可以将默认操作设置为 DISPOSE_ON_CLOSE,并将您的代码windowClosed放在WindowListener. 这样,首先处理框架(它从屏幕上消失),然后执行您的代码。

于 2012-11-26T15:10:20.910 回答
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
    }
});
于 2012-11-26T13:38:35.120 回答
1
After i close my window,i want to create an object of a class and preform a task.

看着

  • HIDE_ON_CLOSEsimplair as setVisible(false);,容器是可重复使用的,可以通过调用来显示它setVisible(true);

  • 或者您可以调用dispose(),这意味着此容器不可重复使用,必须isDisplayable()在调用之前检查setVisible(true);

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

于 2012-11-26T14:03:33.937 回答