我有以下代码。它描述了一个简单的 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”部分中,我可以检查输入,但是在关闭对话框之后。 我该如何解决?
答案 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
方法。