在下面的示例中,如何将服务结果绑定到文本字段,因此如果我调用service.restart(),它会更新字段吗?
这是正确的方法,或者通常是在服务类上有属性吗?
public class FormData {
private StringProperty description = new SimpleStringProperty();
public String getDescription() {
return description.get();
}
public StringProperty descriptionProperty() {
return description;
}
public void setDescription(String description) {
this.description.set(description);
}
}
public class FormDataService extends Service<FormData> {
@Override
protected Task<FormData> createTask() {
return new Task<FormData>() {
protected FormData call() throws Exception {
//database query here
FormData data = new FormData();
data.setDescription("Test Description");
return data;
}
};
}
}
public class Controller {
@FXML
private TextField textField;
@FXML
public void initialize() {
FormDataService service = new FormDataService();
//HOW DO I BIND THE SERVICE RESULT TO THE TEXTFIELD?
}
}
答案 0 :(得分:2)
可能FormData可能有很多字段,每个字段都应该有相应的TextField控件,对吗? 可能是倾听服务属性将适合您的情况:
service.valueProperty().addListener((o, oldValue, newValue) -> {
if (newValue != null) {
textField.setText(newValue.getDescription());
textField2.setText(newValue.getOtherData());
// etc
} else {
// reset your fields
}
});