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

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

最佳答案

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

关于java - 将按钮绑定(bind)到多个属性不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51364207/

10-11 23:31