Как выполнить проверки ввода в TextInputDialog в JavaFX? - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть код ниже. Он описывает простой TextInputDialog (который содержит текстовое поле и кнопку ОК). Как я могу выполнить проверки ввода? (например, убедитесь, что ввод является числовым / не пустым и т. д.). В нижней строке, Я хочу, чтобы кнопка OK была отключена, если ввод неправильный, или если я нажму OK, тогда ничего не произойдет, если ввод неправильный.

TextInputDialog tid = new TextInputDialog("250");
tid.setTitle("Text Input Dialog");
tid.setHeaderText("Input check example");
tid.setContentText("Please enter a number below 100:");
Optional<String> result = tid.showAndWait();
result.ifPresent(name -> System.out.println("Your name: " + name));

В разделе «ifPresent» я могу проверить ввод, но это будет после закрытия диалогового окна. Как я могу это исправить?

Here is the dialog

1 Ответ

0 голосов
/ 30 апреля 2018

Вы можете использовать getEditor() на TextInputDialog, чтобы получить базовые TextField и lookupButton(ButtonType) на DialogPane диалогового окна, чтобы получить OK- Button. Затем вы можете использовать привязку для реализации желаемого поведения:

Button okButton = (Button) tid.getDialogPane().lookupButton(ButtonType.OK);
TextField inputField = tid.getEditor();
BooleanBinding isInvalid = Bindings.createBooleanBinding(() -> isInvalid(inputField.getText()), inputField.textProperty());
okButton.disableProperty().bind(isInvalid);

Теперь вы можете создать метод isInvalid(), который проверяет ваш ввод и либо возвращает true (если кнопка должна быть отключена), либо false (если он должен быть включен).

Конечно, вы можете изменить эту логику и создать вместо этого метод isValid, используя метод not() в привязке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...