Button 如何将多个布尔绑定添加到单个按钮?

Button 如何将多个布尔绑定添加到单个按钮?,button,javafx,boolean,Button,Javafx,Boolean,我需要创建多个绑定,并将它们定位到同一个按钮。 现在我有这个BooleanBinding: BooleanBinding even = new BooleanBinding() { { super.bind(plaintextHex.textProperty()); } @Override protected boolean computeValue() { return ((plaintextHex.ge

我需要创建多个绑定,并将它们定位到同一个按钮。 现在我有这个
BooleanBinding

        BooleanBinding even = new BooleanBinding() {
        { super.bind(plaintextHex.textProperty()); }

        @Override
        protected boolean computeValue() {
            return ((plaintextHex.getText().length() % 2) != 0);
        }
    };
还有这个:

        BooleanBinding maxS = new BooleanBinding() {
        { super.bind(keyHex.textProperty()); }

        @Override
        protected boolean computeValue() {
            return (keyHex.getText().length() > 32);
        }
    };

如果我想分配一个
BooleanBinding
它看起来是这样的:
crButton.disableProperty().bind(偶数),但如果我想和muttiple搭讪,我找不到任何关于如何做的信息。想法是它看起来像这样:
crButton.disableProperty().bind(甚至是maxS),但它当然不是那样工作的。我必须在同一个
BooleanBinding
中制作它们吗?还是有一种方法可以将它们组合起来?

根据您的具体需要,您可以这样做

crButton.disableProperty().bind(even.or(maxS));

也可以只创建一个绑定:

BooleanBinding maxSOrEven = new BooleanBinding() {
    { super.bind(keyHex.textProperty(), plaintextHex.textProperty()); }

    @Override
    protected boolean computeValue() {
        return keyHex.getText().length() > 32 || plaintextHex.getText().length() % 2 != 0 ;
    }
};

crButton.disableProperty().bind(maxSOrEven);

等等。

你说的“绑定多个”是什么意思?如果其中一个布尔绑定为true,您希望禁用它吗?如果两者都为真?您不能将一个属性绑定到多个表达式,因为绑定基本上是“保持此属性的值与此其他表达式的值相同”,如果有多个表达式可能包含不同的值,这将不起作用。
BooleanBinding maxSOrEven = new BooleanBinding() {
    { super.bind(keyHex.textProperty(), plaintextHex.textProperty()); }

    @Override
    protected boolean computeValue() {
        return keyHex.getText().length() > 32 || plaintextHex.getText().length() % 2 != 0 ;
    }
};

crButton.disableProperty().bind(maxSOrEven);