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