2017-11-21 6 views
-1

私は複数のバインディングを作成し、同じボタンにアドレスする必要があります。私は1 BooleanBindingを割り当てる場合、それはこのようになります複数のBooleanBindingを1つのボタンに追加する方法は?

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

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

crButton.disableProperty().bind(even);が、私はmuttipleをassginしたい場合、私は「でき

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

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

そして、この1: は、今のところ私はこのBooleanBindingを持っていますそれを行う方法に関する情報を見つけることはできません。考え方は、それはこのように見えるだろう:crButton.disableProperty().bind(even, maxS);しかし、もちろんそれはそのようには動作しません。両方とも同じでBooleanBindingにする必要がありますか、それらを組み合わせる方法がありますか?

+1

「バインド・マルチ」とはどういう意味ですか?ブール値のバインディングのいずれかが真の場合、それを無効にしますか?両方が真実ならば? –

+0

バインディングは基本的に*異なる値を含む可能性のある複数の式がある場合、動作しない*このプロパティの値を他の式と同じ*に保つため、複数の式にプロパティをバインドすることはできません。 – fabian

答えて

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

など

関連する問題