java / swingでウィンドウを閉じるときに実行する適切なアクションは何ですか?

ジェイソンS:

私はこのテストコードをCustomUIPanelクラスに記述しました。

public static void main(String[] args) {
    final JDialog dialog = CustomUIPanel.createDialog(null, 
       CustomUIPanel.selectFile());
    dialog.addWindowListener(new WindowAdapter() {
        @Override public void windowClosing(WindowEvent e) {
            System.exit(0);
        }
    });
}

CustomUIPanel.main()プログラムのエントリポイントである場合正しく動作しますが、何か不思議に思わCustomUIPanel.main()れます。別のクラスがテストを要求した場合はどうなりますか?その後、私の呼び出しSystem.exit(0)は正しくありません。

トップレベルウィンドウがない場合にSwingイベントディスパッチスレッドに自動的に終了するように指示する方法はありますか?

そうでない場合、すべての最上位ウィンドウが閉じられたときにプログラムを終了することが目的である場合、JDialog / JFrameが閉じるときに何をするのが正しいでしょうか。

ゴミ神:

setDefaultCloseOperation()メソッドを使用してJDialog、以下を指定できますDISPOSE_ON_CLOSE

setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);

12.8プログラムの終了」も参照してください

補遺:@camickrの役立つ答えを取り入れて、この例はウィンドウが閉じられるか閉じるボタンが押されると終了します。

import java.awt.EventQueue;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.WindowEvent;
import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;

/** @see http://stackoverflow.com/questions/5540354 */
public class DialogClose extends JDialog {

    public DialogClose() {
        this.setLayout(new GridLayout(0, 1));
        this.add(new JLabel("Dialog close test.", JLabel.CENTER));
        this.add(new JButton(new AbstractAction("Close") {

            @Override
            public void actionPerformed(ActionEvent e) {
                DialogClose.this.setVisible(false);
                DialogClose.this.dispatchEvent(new WindowEvent(
                    DialogClose.this, WindowEvent.WINDOW_CLOSING));
            }
        }));
    }

    private void display() {
        this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
        this.pack();
        this.setLocationRelativeTo(null);
        this.setVisible(true);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                new DialogClose().display();
            }
        });
    }
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Javaでオフスクリーンフレームを作成しますか(または、すべてのアプリケーションウィンドウが閉じているときに、Macで空のメニューを回避する方法)?

分類Dev

Javaでは、ウィンドウを閉じたときに確実に起動するコードをどこに配置しますか?

分類Dev

Java Swing:内部JFrameクラスは閉じるとメインウィンドウを閉じます

分類Dev

sqliteデータベースに接続し、プリペアドステートメントを実行してJavaとの接続を閉じる適切な方法は何ですか?

分類Dev

Java GUIのボタンをクリックしたときに、新しいウィンドウを開いて現在のウィンドウを閉じるにはどうすればよいですか?

分類Dev

Java RCPアプリケーションでワークベンチウィンドウを閉じる処理

分類Dev

Javaでウィンドウを強制的に閉じる方法は?

分類Dev

Javaランタイム、アプリケーションを閉じるときにいくつかのアクションを実行します

分類Dev

Java Swingでウィンドウを閉じるためのハンドラーを作成する方法

分類Dev

Javaアプリケーションが実行を開始したときに発生するこれらのスレッドは何ですか?

分類Dev

WindowsでJavaアプリケーションを適切にシャットダウンするにはどうすればよいですか?

分類Dev

ユーザーがアプリケーションウィンドウの特定の場所をクリックしたときに、Javaで背景色を変更するにはどうすればよいですか?

分類Dev

Javaを使用して、Instagramのフォロワー/フォローしているウィンドウでスクロールダウンアクションを実行できますか?

分類Dev

Nvidia 3D VisionハードウェアでJava3Dアプリケーションを実行することは可能ですか?

分類Dev

日食で、複数のJavaアプリを異なるコンソールウィンドウで実行する方法はありますか?

分類Dev

ファイルを適切に閉じることを保証するJava単体テストの良いパターンは何ですか?

分類Dev

アプリケーションの起動が完了したことを知るために使用できるJava Swingイベントは何ですか?

分類Dev

Java-Swingアプリケーションで閉じるボタンを非表示にする方法はありますか?

分類Dev

Java Swing-ステージベースのGUIを実行する適切な方法は何ですか?

分類Dev

`BasicLookAndFeel`サブクラスがJava 11でアンチエイリアスをアクティブにする適切な方法は何ですか?

分類Dev

クラス、メソッド、フィールドなどに適用されないJavaアノテーションを使用することは可能ですか?アノテーション自体がコードを生成するだけ

分類Dev

Java-WindowClosingが実際にウィンドウを閉じないようにする方法

分類Dev

どのように私はドッキングウィンドウは、複数の関連のMaven Javaプロジェクトをビルドし最適化することができますか?(キャッシング)

分類Dev

タイトルバーではなく境界線のあるswingを使用してJavaでウィンドウを作成することは可能ですか?

分類Dev

Javaアプリケーションの実行時間を短縮できるJVM機能は何ですか?

分類Dev

アプリケーションをグリッド/クラスター対応にするJavaの最適なライブラリは何ですか?

分類Dev

EDTを使用せずにJava Swingでアクティブレンダリングを実行することは可能ですか?

分類Dev

Javaでバックグラウンドでタイマーを実行することは可能ですか?

分類Dev

Java Swing:JFileChooserを閉じた後も親ウィンドウを開いたままにする方法

Related 関連記事

  1. 1

    Javaでオフスクリーンフレームを作成しますか(または、すべてのアプリケーションウィンドウが閉じているときに、Macで空のメニューを回避する方法)?

  2. 2

    Javaでは、ウィンドウを閉じたときに確実に起動するコードをどこに配置しますか?

  3. 3

    Java Swing:内部JFrameクラスは閉じるとメインウィンドウを閉じます

  4. 4

    sqliteデータベースに接続し、プリペアドステートメントを実行してJavaとの接続を閉じる適切な方法は何ですか?

  5. 5

    Java GUIのボタンをクリックしたときに、新しいウィンドウを開いて現在のウィンドウを閉じるにはどうすればよいですか?

  6. 6

    Java RCPアプリケーションでワークベンチウィンドウを閉じる処理

  7. 7

    Javaでウィンドウを強制的に閉じる方法は?

  8. 8

    Javaランタイム、アプリケーションを閉じるときにいくつかのアクションを実行します

  9. 9

    Java Swingでウィンドウを閉じるためのハンドラーを作成する方法

  10. 10

    Javaアプリケーションが実行を開始したときに発生するこれらのスレッドは何ですか?

  11. 11

    WindowsでJavaアプリケーションを適切にシャットダウンするにはどうすればよいですか?

  12. 12

    ユーザーがアプリケーションウィンドウの特定の場所をクリックしたときに、Javaで背景色を変更するにはどうすればよいですか?

  13. 13

    Javaを使用して、Instagramのフォロワー/フォローしているウィンドウでスクロールダウンアクションを実行できますか?

  14. 14

    Nvidia 3D VisionハードウェアでJava3Dアプリケーションを実行することは可能ですか?

  15. 15

    日食で、複数のJavaアプリを異なるコンソールウィンドウで実行する方法はありますか?

  16. 16

    ファイルを適切に閉じることを保証するJava単体テストの良いパターンは何ですか?

  17. 17

    アプリケーションの起動が完了したことを知るために使用できるJava Swingイベントは何ですか?

  18. 18

    Java-Swingアプリケーションで閉じるボタンを非表示にする方法はありますか?

  19. 19

    Java Swing-ステージベースのGUIを実行する適切な方法は何ですか?

  20. 20

    `BasicLookAndFeel`サブクラスがJava 11でアンチエイリアスをアクティブにする適切な方法は何ですか?

  21. 21

    クラス、メソッド、フィールドなどに適用されないJavaアノテーションを使用することは可能ですか?アノテーション自体がコードを生成するだけ

  22. 22

    Java-WindowClosingが実際にウィンドウを閉じないようにする方法

  23. 23

    どのように私はドッキングウィンドウは、複数の関連のMaven Javaプロジェクトをビルドし最適化することができますか?(キャッシング)

  24. 24

    タイトルバーではなく境界線のあるswingを使用してJavaでウィンドウを作成することは可能ですか?

  25. 25

    Javaアプリケーションの実行時間を短縮できるJVM機能は何ですか?

  26. 26

    アプリケーションをグリッド/クラスター対応にするJavaの最適なライブラリは何ですか?

  27. 27

    EDTを使用せずにJava Swingでアクティブレンダリングを実行することは可能ですか?

  28. 28

    Javaでバックグラウンドでタイマーを実行することは可能ですか?

  29. 29

    Java Swing:JFileChooserを閉じた後も親ウィンドウを開いたままにする方法

ホットタグ

アーカイブ