0

ここでは Java の初心者です。これが取り引きです:私は次の単純なシャットダウンフックを持っています:

class SHook implements Runnable {
public void run() {
    System.out.println("SH is done.");
}
}

そして、メッセージがそこに表示されるように、出力がリダイレクトされる TextArea を備えた GUI アプリケーションを用意しました。そのウィンドウ リスナーも非常に単純です。

public class MyAdapter extends WindowAdapter {
public void windowClosing(WindowEvent w){
    System.exit(0);
}
}

[X] ボタンで GUI アプリケーションを閉じると、全体がシャットダウンする前にメッセージが一瞬表示されます。ここには何も問題はありません。

私がやりたいことは、メッセージが印刷された後、メッセージが印刷されたことをはっきりと確認できるまで数秒待つことです。アプリケーションがまだすぐに閉じられるため、実行メソッドにスリープまたは待機などを追加しても機能しないようです。

シャットダウンフックは実際には適切に機能していると思いますが、アプリケーションが気にせずすぐに GUI を閉じるだけで、私のフックは Java limbo のどこかにメッセージを出力します。

あれは正しいですか?はいの場合、シャットダウンフックを非シャットダウンフックにせずに、シャットダウンフックが完了した後にのみGUIアプリケーションが閉じるようにする簡単な方法はありますか?

4

1 に答える 1

0

JFrame 呼び出しメソッドで:

setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

次に、 yourが wi​​th methodWindowAdapterに追加されていることを確認します。JFrameadWindowListener

次に、windowClosingいくつかの println を入れて、いつ呼び出されたかを確認します。もちろん、フレームを閉じたい場合はSystem.exit(0)in を使用します。windowClosing

于 2014-05-17T17:05:08.800 に答える