5

これは私の主な方法であり、shutdownhook が含まれています。

public static void main(String args[]) {
    Runtime.getRuntime().addShutdownHook(new Thread() {
        @Override
        public void run() {
            JOptionPane.showMessageDialog(null, "Shutdown hook");
        }
        });

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(
            new Runnable() {
                @Override
                public void run() {
                    Thread.setDefaultUncaughtExceptionHandler(new MyUncaughtExceptionHandler());
                    MyFrame frame = new MyFrame();
                    frame.setVisible(true);
                }
            });
}

問題は、JOptionPaneまったく表示されないことです。代わりに、フレームは閉じますが、アプリ自体は引き続き実行されます。PS。Mac OS Xの+コマンドでイベントが発生しないため、WindowClosingイベントを使用できません。CmdQ

4

1 に答える 1

2

ディスパッチ スレッドが既にシャットダウンされているか、キューへの送信が実行される前にシャットダウンされる可能性があります。

終了イベントをトラップする別の方法を見つける必要があります。VM の終了時にシャットダウン フックがあるため、UI が呼び出されたときにそれ以上のリソースを拘束する必要はありません。

于 2013-03-21T12:03:30.220 に答える