如何在JavaFX中的TextInputDialog中执行输入检查?

时间:2018-04-29 22:57:00

标签: java javafx dialog javafx-8 javafx-2

我有以下代码。它描述了一个简单的 TextInputDialog (包含文本字段和OK按钮)。 我该如何进行输入检查? (例如,验证输入是数字/非空 - 等等)。 在底线,如果输入错误,我希望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 :(得分:4)

您可以使用getEditor()上的TextInputDialog来获取对话框TextField上的基础lookupButton(ButtonType)DialogPane,以获得OK - {{ 1}}。然后,您可以使用绑定来实现所需的行为:

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(如果应该启用)。< / p>

当然,您可以通过在绑定上使用false方法来改变此逻辑并创建isValid方法。