代码之家  ›  专栏  ›  技术社区  ›  Mārtiņš Ciekurs

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

  •  -1
  • Mārtiņš Ciekurs  · 技术社区  · 7 年前

    我需要进行多个绑定,并将它们定位到同一个按钮。 现在我有这个 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);
            }
        };
    

    如果我想分配一个 布尔绑定 看起来是这样的: crButton.disableProperty().bind(even); ,但如果我想胡言乱语,我找不到任何关于如何做到这一点的信息。这个想法是这样的: crButton.disableProperty().bind(even, maxS); 布尔绑定 或者有一种方法可以将它们结合起来?

    1 回复  |  直到 7 年前
        1
  •  0
  •   James_D    7 年前

    取决于你需要什么,你可以做什么

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