LoginSignup
3
6

More than 5 years have passed since last update.

JavaFXのダイアログで×ボタンを無効にする方法

Last updated at Posted at 2016-08-27

JavaFXのダイアログで×ボタンを無効にする方法です。Dialog#getResult()メソッドの結果がnullになることを利用します。

×ボタンを無効
        Alert alert = new Alert(AlertType.INFORMATION);

        // ダイアログの×ボタンを無効にする
        alert.getDialogPane().getScene().getWindow().setOnCloseRequest(e -> {
                if (alert.getResult() == null) {
                    e.consume();
                }
        });

        alert.showAndWait();

Dialog#initStyleメソッドを使う方法

JavaFXのダイアログAlert、ChoiceDialog、TextInputDialogはDialogクラスのサブクラスです。このクラスのinitStyleメソッドを使うことによって、タイトルバーを非表示にできます。結果、×ボタンが表示されないです。@y_q1m さん情報ありがとうございます。

以下はメソッドの定義です。

public final void initStyle(StageStyle style)

引数は列挙型StageStyleです。以下の定数があります。

  • DECORATED
  • TRANSPARENT
  • UNDECORATED
  • UNIFIED
  • UTILITY

このうち、DECORATEDが初期値です。タイトルバーを非表示にするには、TRANSPARENT、UNDECORATEDを使います。

キャプチャ

以下のソースで定数を変えてダイアログを表示してみました。

検証のソース
        StageStyle stageStyle = StageStyle.[定数];
        Alert alert = new Alert(AlertType.INFORMATION);
        alert.initStyle(stageStyle);
        alert.setContentText(stageStyle.toString());
        alert.showAndWait();

DECORATED.png

TRANSPARENT.png

UNDECORATED.png

UNIFIED.png

UTILITY.png

TRANSPARENTは透明な背景になるはずですが、今回の検証では透明になりませんでした。

編集履歴

20160911

  • 「Dialog#initStyleメソッドを使う方法」を追加。
3
6
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
6