2013-11-28 185 views
9

我有一個簡單的帶有文本框和按鈕的fxml。如果文本框爲空,我希望禁用該按鈕。所以我在我的控制器中插入如下內容:JavaFX綁定到多個屬性

@Override 
public void initialize(URL url, ResourceBundle bundle) { 
    button.disableProperty().bind(textField.textProperty().isEqualTo("")); 
} 

..並且工作正常。問題是當我添加第二個文本字段,並希望我的按鈕被禁用,如果任何文本字段爲空。那麼該怎麼辦?我嘗試以下,但不工作:通過Bindings

@Override 
public void initialize(URL url, ResourceBundle bundle) { 
    button.disableProperty().bind(textField.textProperty().isEqualTo("")); 
    button.disableProperty().bind(textField2.textProperty().isEqualTo("")); 
} 

回答

15

這可能是通過結合一個布爾表達式:

button.disableProperty().bind(
    Bindings.and(
     textField.textProperty().isEqualTo(""), 
     textField2.textProperty().isEqualTo(""))); 
+1

.textProperty()。isEmpty() - 對我來說似乎是一個更好的方法。 –

5

除了Andreys的方法,我發現你也可以像這樣做:

BooleanBinding booleanBinding = 
     textField.textProperty().isEqualTo("").or(
     textField2.textProperty().isEqualTo("")); 

    button.disableProperty().bind(booleanBinding); 
1

除了martin_dk回答,如果要綁定兩個以上的屬性,你會得到像下面的代碼,看起來怪異,但它的作品。

BooleanBinding booleanBinding 
     = finalEditor.selectedProperty().or(
       staticEditor.selectedProperty().or(
         syncEditor.selectedProperty().or(
           nativeEditor.selectedProperty().or(
             strictEditor.selectedProperty())))); 

abstractEditor.disableProperty().bind(booleanBinding);