【问题标题】:OnExit Event For a Swing Application?Swing 应用程序的 OnExit 事件?
【发布时间】:2010-03-18 01:31:15
【问题描述】:

我正在开发一个简单的应用程序来使用 Swing 管理业务的运营部分,但我需要在应用程序退出时执行以下操作:

updateZonas();
db.close();

但是我该怎么做呢?

【问题讨论】:

    标签: java swing exit


    【解决方案1】:
    Runtime.getRuntime().addShutdownHook(new Thread()
    {
        @Override
        public void run()
        {
            updateZonas();
            db.close();
        }
    });
    

    这适用于任何 Java 应用程序(Swing/AWT/Console)

    【讨论】:

    • @vemv 为什么级别低?当然,如果您需要在任何情况下拦截退出事件,您需要一个低级挂钩?
    【解决方案2】:

    你在使用 JFrame 吗?如果是这样,你可以试试这个:

        myframe.addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(WindowEvent winEvt) {
                updateZonas();
                db.close();
                System.exit(0);
            }
        });
    

    【讨论】:

    • 还在 updateZonas 和 dbclose 调用周围放置一个 try/catch/finally,以防出现问题。您可以让用户知道出现问题并决定应用是否仍应退出。
    • System.exit(0); 有必要吗?
    • 不应该没有必要。
    • 旁注:如果另一个服务正在关闭它,这对 OSGi 服务不起作用。
    【解决方案3】:

    WindowListener 添加到您的 JFrame。它的windowClosing 方法会调用你需要的任何代码,然后是System.exit(0)(或其他一些返回代码)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-05
      • 1970-01-01
      • 2017-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多