如何将多个BooleanBinding添加到单个按钮?

时间:2017-11-21 19:00:45

标签: button javafx boolean

我需要进行多次绑定并将它们发送到同一个按钮。 现在我有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(even);,但是如果我想要多次设置,我找不到任何关于如何做的信息。这个想法是它看起来像这样:crButton.disableProperty().bind(even, maxS);,但当然它不会那样工作。我是否必须在同一BooleanBinding中制作两者,或者有一种方法可以将它们组合在一起?

1 个答案:

答案 0 :(得分:0)

根据您的具体需要,您可以

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

crButton.disableProperty().bind(even.and(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);