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();
TRANSPARENTは透明な背景になるはずですが、今回の検証では透明になりませんでした。
#編集履歴
20160911
- 「Dialog#initStyleメソッドを使う方法」を追加。