我正在使用JFoenix创建登录表单,我的表单确实具有文本字段和密码字段
我想做的是根据两个字段的有效性自动禁用/启用“连接器”按钮
在我的代码下面
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);
}
});