web-dev-qa-db-ja.com

JFrameで関数を実行

void terminate() {}
protected JFrame frame = new JFrame();

閉じるボタンを押したときにframeで終了機能を実行するにはどうすればよいですか?

編集:これを実行しようとしましたが、何らかの理由でテストを出力しません(ただし、プログラムは終了します)。誰が何が問題になるのか考えていますか?

frame.addWindowListener(new WindowAdapter() {
    public void WindowClosing(WindowEvent e) {
        System.out.println("test");
        frame.dispose();
    }
});
14
Mattias

addWindowListener を使用できます。

frame.addWindowListener(new WindowAdapter()
{
    public void windowClosing(WindowEvent e)
    {
        ... //call terminate
        ...
    }
});

void windowClosing(WindowEvent e) および Class WindowAdapter も参照してください。

22
Maroun

ウィンドウリスナーを追加する必要があるだけでなく、閉じるときに何もしないようにデフォルトの閉じる操作を設定する必要があります。これにより、コードを実行できます。

    frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
    frame.addWindowListener(new WindowAdapter() {
        @Override
        public void windowClosing(WindowEvent event) {
            exitProcedure();
        }
    });

最後に、プログラムの実行を実際に停止するには、システム出口を呼び出す必要があります。

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

Frame.dispose()メソッドはプログラムを終了しません。プログラムを終了するには、System.exit(0)メソッドを呼び出す必要があります。

1
Muhammad

JFrameを閉じた後にプログラムを終了する場合は、JFrameにデフォルトの閉じる操作を設定する必要があります。

JFrameのコンストラクターに次のように記述します。

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

ウィンドウが閉じているときにメソッドを呼び出し、プログラム全体を終了したくない場合は、Marounの答えを使用してください。

1
Martin Seeler