我有10個TextFields,分爲2列5.我想要一個特定的按鈕被禁用,直到所有這些文本框都寫入了文本。我正在使用Java 1.7 - 我找到的所有示例都是針對Java 6(已棄用)和8.去掉一個按鈕,直到10個文本框被填充
任何人都可以通過此操作來找到我?我只是想要一個按鈕,只有在所有的文本框都被填充後才能使用。任何幫助,高度讚賞。
我有10個TextFields,分爲2列5.我想要一個特定的按鈕被禁用,直到所有這些文本框都寫入了文本。我正在使用Java 1.7 - 我找到的所有示例都是針對Java 6(已棄用)和8.去掉一個按鈕,直到10個文本框被填充
任何人都可以通過此操作來找到我?我只是想要一個按鈕,只有在所有的文本框都被填充後才能使用。任何幫助,高度讚賞。
按鈕將在第十個文本字段填充後變爲啓用。您無法知道哪個文本字段將是第十個,因此您可能想要執行的操作是向每個按鈕添加一個change listener,並在監聽器檢查10個字段是否非空。這裏有一個tutorial和一個example。
在java 7中,你不能使用lambda表達式,所以你必須以舊的方式來做。
隨意格式化代碼原因使用手機寫..
一個快速的方法是在每個TextField
變化監聽器添加在它的textproperty()這樣的:
ChangeListener listener = new ChangeListener(){
@Override
public void changed(ObservableValue observable, String oldValue, String newValue) {
boolean visible = true;
for(TextField field:fieldsArray)
if(field.getText().isEmpty()){
visible=false;
break;
}
button.setVisible(visible);
}
};
textField.textProperty().addListener(changeListener);
記住一個聽衆可以添加多次。
東西更好地在這裏將綁定按鈕visibleProperty()
到SimpleBooleanProperty
這樣的:
BooleanProperty visibleProperty = new SimpleBooleanProperty();
button.visibleProperty.bind(visibleProperty);
的變化監聽稍加修改,然後西港島線來完成:
ChangeListener listener = new ChangeListener(){
@Override
public void changed(ObservableValue observable, String oldValue, String newValue) {
boolean visible = true;
for(TextField field:fieldsArray)
if(field.getText().isEmpty()){
visible=false;
break;
}
visibleProperty.set(visible);
}
};
作爲一個不同的答案中指出,Java 7中不允許使用lambda表達式 – yitzih