java - 如何使用 JFoenix RequiredFieldValidator 启用/禁用表单 JFXButton?

标签 java validation javafx jfoenix

我正在使用 JFoenix 创建一个登录表单,我的表单有一个文本字段和一个密码字段 as you see validation is okey :)

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

在我的代码下面

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();
        }
    });

}

如果您认为有更好的方法,我愿意接受任何建议。

谢谢。

最佳答案

在 javafx 中,我们可以轻松地在控件属性之间绑定(bind)可见性或不可见性。 我所做的只是将我的连接按钮的 disableProperty 绑定(bind)到我所有必填字段的 textProperty,并且使用逻辑表达式非常简单。

我添加的代码如下:

    connect.disableProperty().bind((
            passwordConfirm.textProperty().isNotEmpty().and(
            password.textProperty().isNotEmpty()).and(
            userName.textProperty().isNotEmpty())
            ).not());

这个答案并没有像我希望的那样使用 JFoenix 的验证,而是在某种程度上满足了我的需求。

关于java - 如何使用 JFoenix RequiredFieldValidator 启用/禁用表单 JFXButton?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43381052/

相关文章:

java - 在 Java 8 的链式语句中检查 null 或检查异常的正确方法是什么?

java - 接口(interface)是否被视为实现它的类的父级?

java - 如何创建一个程序,将 0 和 1 随机分配给数组元素并找到它的十进制值

java - Java中通过执行ping命令来检测网络上的设备

javascript - 验证包含日期的 Javascript 对象

php - 让 PHP Eclipse 对不同的文件类型运行错误检查

java - JavaFX 中带有自定义内容的 ListView

reactjs - Formik 和 yup 验证正在验证一个非必需的文件输入字段

java - 使用 scenebuilder 将字符串输出到文本字段 javafx

java - 如何将列表/ map 与组合框一起使用