我正在使用JFoenix创建登录表单,我的表单确实具有文本字段和密码字段java - 如何使用JFoenix RequiredFieldValidator启用/禁用JFXButton表单?-LMLPHP

我想做的是根据两个字段的有效性自动禁用/启用“连接器”按钮

在我的代码下面

RequiredFieldValidator requiredFieldValidator ;
private void setupValidation() {
    requiredFieldValidator = new RequiredFieldValidator();
    requiredFieldValidator.setIcon(new ImageView(getClass().getResource("/icons/errors/invalid.png").toString()));
    requiredFieldValidator.setMessage("champs obligatoire");

    userName.getValidators().add(requiredFieldValidator);
    userName.focusedProperty().addListener((ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) -> {
        if (!newValue) {
            userName.validate();
        }
    });

    requiredFieldValidator = new RequiredFieldValidator();
    requiredFieldValidator.setIcon(new ImageView(getClass().getResource("/icons/errors/invalid.png").toString()));
    requiredFieldValidator.setMessage("champs obligatoire");
    password.getValidators().add(requiredFieldValidator);
    password.focusedProperty().addListener((ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) -> {
        if (!newValue) {
            password.validate();
        }
    });
    requiredFieldValidator = new RequiredFieldValidator();
    requiredFieldValidator.setIcon(new ImageView(getClass().getResource("/icons/errors/invalid.png").toString()));
    requiredFieldValidator.setMessage("champs obligatoire");
    passwordConfirm.getValidators().add(requiredFieldValidator);
    passwordConfirm.focusedProperty().addListener((ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) -> {
        if (!newValue) {
            passwordConfirm.validate();
        }
    });

}


如果您认为有更好的方法可以这样做,那么我欢迎任何建议。

谢谢。

最佳答案

您可以像最初希望的那样使用JFoenix验证。当您调用validate()方法时,实际上可以获取一个布尔值,每次焦点属性更改时,布尔值将为true / false,具体取决于验证。那是:

userName.focusedProperty().addListener((ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) -> {
    if (!newValue) {
        if(userName.validate()) userName.setDisable(false);
        else userName.setDisable(true);
    }
});

08-18 13:22