ControlsFX:验证结果

Ayo*_*b.A 2 validation javafx controlsfx

我想在JavaFx使用中做一些验证ControlsFX.我的代码是这样的:

ValidationSupport support = new ValidationSupport();
boolean isValid = true;
if(textField.getText().trim().isEmpty()) isValid = false;
support.registerValidator(testField, Validator.createEmptyValidator("This field is required!"));
Run Code Online (Sandbox Code Playgroud)

我的问题是,是否可以省略if条件并textField从验证支持中提取是否为空

Jam*_*s_D 6

你的isValid变量和if声明并没有真正做任何事情.在ValidationSupport包含一个可观察的invalid属性,使用它可以注册监听器:

support.invalidProperty().addListener((obs, wasInvalid, isNowInvalid) -> {
    if (isNowInvalid) {
        System.out.println("Invalid");
    } else {
        System.out.println("Valid");
    }
});
Run Code Online (Sandbox Code Playgroud)

或者(可能更方便)注册绑定:

Button okButton = new Button("OK");
okButton.disableProperty().bind(support.invalidProperty());
Run Code Online (Sandbox Code Playgroud)

最后一个代码段将确保okButton仅在文本字段不为空时才启用.