将按钮绑定到多个属性不起作用

时间:2018-07-16 14:32:42

标签: java javafx binding

我的按钮被禁用,但是一旦我填写了用户名,密码和comboBox,我就希望启用该按钮。所以我为此使用了绑定,但是当我将其与我的comboBox一起使用时,无法将绑定应用于给定类型错误。还有另一种方法可以执行此操作,因为我想在将来添加日期和微调框。

button.disableProperty().bind(
       Bindings.or(
             username.textProperty().isEmpty(),
             password.textProperty().isEmpty(),
             comboBox.valueProperty().isNull()
       )
);

1 个答案:

答案 0 :(得分:4)

Bindings.or仅使用2个参数,而不是3个。您需要两次应用or

button.disableProperty().bind(
         username.textProperty().isEmpty().or(
             password.textProperty().isEmpty().or(
                 comboBox.valueProperty().isNull()))
);

或者,您可以使用createBooleanBinding,它也允许使用可读性更高的表达式:

button.disableProperty().bind(Bindings.createBooleanBinding(
    () -> username.getText().isEmpty() || password.getText().isEmpty() || (comboBox.getValue() == null),
    username.textProperty(), password.textProperty(), comboBox.valueProperty()
));