JavaFX绑定到多个属性
我有一个带文本字段和按钮的简单fxml。 如果文本字段为空,我想禁用该按钮。 所以我在我的控制器中插入如下内容:
@Override public void initialize(URL url, ResourceBundle bundle) { button.disableProperty().bind(textField.textProperty().isEqualTo("")); }
..并且工作正常。 问题是当我添加第二个文本字段并希望如果任一文本字段为空时我的按钮被禁用。 该怎么办? 我尝试了以下,但这不起作用:
@Override public void initialize(URL url, ResourceBundle bundle) { button.disableProperty().bind(textField.textProperty().isEqualTo("")); button.disableProperty().bind(textField2.textProperty().isEqualTo("")); }
这可以通过Bindings
绑定到布尔表达式:
button.disableProperty().bind( Bindings.and( textField.textProperty().isEqualTo(""), textField2.textProperty().isEqualTo("")));
除了Andreys的方法,我发现你也可以这样做:
BooleanBinding booleanBinding = textField.textProperty().isEqualTo("").or( textField2.textProperty().isEqualTo("")); button.disableProperty().bind(booleanBinding);
除了martin_dk的答案,如果你想绑定两个以上的属性,你将得到如下的代码,看起来很奇怪,但它的工作原理。
BooleanBinding booleanBinding = finalEditor.selectedProperty().or( staticEditor.selectedProperty().or( syncEditor.selectedProperty().or( nativeEditor.selectedProperty().or( strictEditor.selectedProperty())))); abstractEditor.disableProperty ().bind(booleanBinding);