javafx
ダイアログ
サーチ…
備考
JavaFX 8アップデート40でダイアログが追加されました。
TextInputDialog
TextInputDialog
使用すると、ユーザーに単一のString
を入力するように要求できます。
TextInputDialog dialog = new TextInputDialog("42");
dialog.setHeaderText("Input your favourite int.");
dialog.setTitle("Favourite number?");
dialog.setContentText("Your favourite int: ");
Optional<String> result = dialog.showAndWait();
String s = result.map(r -> {
try {
Integer n = Integer.valueOf(r);
return MessageFormat.format("Nice! I like {0} too!", n);
} catch (NumberFormatException ex) {
return MessageFormat.format("Unfortunately \"{0}\" is not a int!", r);
}
}).orElse("You really don't want to tell me, huh?");
System.out.println(s);
ChoiceDialog
ChoiceDialog
使用すると、オプションのリストから1つの項目を選択できます。
List<String> options = new ArrayList<>();
options.add("42");
options.add("9");
options.add("467829");
options.add("Other");
ChoiceDialog<String> dialog = new ChoiceDialog<>(options.get(0), options);
dialog.setHeaderText("Choose your favourite number.");
dialog.setTitle("Favourite number?");
dialog.setContentText("Your favourite number:");
Optional<String> choice = dialog.showAndWait();
String s = choice.map(c -> "Other".equals(c) ?
"Unfortunately your favourite number is not available!"
: "Nice! I like " + c + " too!")
.orElse("You really don't want to tell me, huh?");
System.out.println(s);
アラート
Alert
は、一連のボタンを表示し、ユーザーがクリックしたボタンに応じて結果を取得する単純なポップアップです。
例
これにより、ユーザーが実際にプライマリステージを閉じることを望むかどうかを決定できます。
@Override
public void start(Stage primaryStage) {
Scene scene = new Scene(new Group(), 100, 100);
primaryStage.setOnCloseRequest(evt -> {
// allow user to decide between yes and no
Alert alert = new Alert(Alert.AlertType.CONFIRMATION, "Do you really want to close this application?", ButtonType.YES, ButtonType.NO);
// clicking X also means no
ButtonType result = alert.showAndWait().orElse(ButtonType.NO);
if (ButtonType.NO.equals(result)) {
// consume event i.e. ignore close request
evt.consume();
}
});
primaryStage.setScene(scene);
primaryStage.show();
}
ボタンのテキストは、 Locale
によって自動的に調整されることに注意してください。
カスタムボタンのテキスト
ボタンに表示されるテキストは、 ButtonType
インスタンスを自分で作成することでカスタマイズできます。
ButtonType answer = new ButtonType("42");
ButtonType somethingElse = new ButtonType("54");
Alert alert = new Alert(Alert.AlertType.NONE, "What do you get when you multiply six by nine?", answer, somethingElse);
ButtonType result = alert.showAndWait().orElse(somethingElse);
Alert resultDialog = new Alert(Alert.AlertType.INFORMATION,
answer.equals(result) ? "Correct" : "wrong",
ButtonType.OK);
resultDialog.show();
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow