如何从布尔值

时间:2017-03-20 19:02:32

标签: java javafx boolean

鉴于我有一个带有验证器的javafx输入字段(示例来自JFoenix library):

JFXTextField validationField = new JFXTextField();
validationField.setPromptText("Your age");

NumberValidator validator = new NumberValidator();
validator.setMessage("Digits only!");    
validationField.getValidators().add(validator);
validationField.focusedProperty().addListener((o,oldVal,newVal)->{
    if(!newVal) validationField.validate();
});

我的目标是仅在文本字段上的验证返回true时启用/禁用某些按钮,但validationField.validate()返回布尔值而不是ObservableBooleanValue。

BooleanBinding invalid = someOtherTextField.textProperty().isEmpty()
                .or(!validationField.validate()); // invalid syntax                                 
candidateButton.disableProperty().bind(invalid);

如何通过验证文本字段创建ObservableBooleanValue?

1 个答案:

答案 0 :(得分:2)

您可以使用Bindings.createBooleanBinding方法创建BooleanBinding。您需要指定Callable<Boolean>(一个返回要包含在BooleanBinding中的值的函数),以及必须遵守的任何其他Observable,以便在重新计算函数时重新计算他们改变了。

所以你可以做到

BooleanBinding invalid = someOtherTextField.textProperty().isEmpty()
    .or(Bindings.createBooleanBinding(() -> !validationField.validate(), 
        validationField.textProperty()));

我不知道JFoenix(我已经看了好几次,但似乎没有任何合理的文件库 - 例如没有Javadocs - 所以就我而言,它是在生产中并不真正可用)。可能有办法直接获得绑定。