首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在Swing应用程序中使用WindowListener?

为什么在Swing应用程序中使用WindowListener?
EN

Stack Overflow用户
提问于 2014-06-11 11:01:02
回答 2查看 137关注 0票数 0

我在Swing演示应用程序中看到了以下代码:

代码语言:javascript
复制
WindowListener wndCloser = new WindowAdapter() {
    public void windowClosing(WindowEvent e) {
        System.exit(0);
    }
};
addWindowListener(wndCloser);

为什么要使用此代码关闭应用程序?如果没有它会发生什么,和/或是否有其他(较短的)选项来做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-11 11:44:51

为什么要使用此代码关闭应用程序?

正如TimH所说,您可以在退出Swing应用程序之前记录信息、写出属性或进行任何其他清理。

下面是通常使用的关闭窗口代码的方式。

代码语言:javascript
复制
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
WindowListener wndCloser = new WindowAdapter() {
    public void windowClosing(WindowEvent e) {
        exitProcedure();
    }
};
frame.addWindowListener(wndCloser);


public void exitProcedure() {
    frame.dispose();
    System.exit(0);
}

因为exitProcedure是一个单独的方法,所以可以从JMenuItem动作侦听器执行它,比如"Exit“。

如果没有它会发生什么,和/或是否有其他(较短的)选项来做到这一点?

一个较短的选择是

代码语言:javascript
复制
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

如果不指定任何默认的关闭操作,则Swing应用程序在关闭JFrame后继续运行。你最终得到了数十个正在运行的应用程序,什么都不做。

票数 4
EN

Stack Overflow用户

发布于 2014-06-11 11:09:32

您可以使用它来记录如下的一些信息:

代码语言:javascript
复制
frame.addWindowListener(new WindowAdapter() {
       @Override
       public void windowClosing(WindowEvent e) {
        log.info("Programm exit.");
            System.exit(0);
        super.windowClosed(e);
      }
});

较短的版本如下:

代码语言:javascript
复制
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24161248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档