1
Comment puis-je lier un TableView
éléments à une valeur de service en cours d'exécution comme dans un ListView
:Liez un TableView itemsProperty() au service valueProperty()
todoList.itemsProperty().bind(service.valueProperty());
Quand j'ai essayé, je reçois une erreur de compilation:
error: method bind in interface Property<T> cannot be applied to given types:
required : ObservableValue<? extends ObservableList<TodoTAsk>>
found : ReadOnlyObjectProperty<List<TodoTask>>
Modifier: Ma classe de service
public final class AllTasks extends Service<ObservableList<TodoTask>> {
@Override
protected Task<ObservableList<TodoTask>> createTask() {
return new Task<ObservableList<TodoTask>>() {
@Override
protected ObservableList<TodoTask> call() throws Exception {
ObservableList<TodoTask> list = FXCollections.observableArrayList();
// list.addAll(new TaskRepository().getAllTasks());
for (TodoTask task : new TaskRepository().getAllTasks()) {
Thread.sleep(1500);
list.add(task);
}
System.out.println(list);
return list;
}
};
}
}
comment puis-je obtenir une mise à jour en temps réel, je veux dire tout le fonctionnement du fil, les 'éléments TableView' soient mis à jour? – tarrsalah
Essayez d'insérer Platform.runLater dans le code de votre service pour mettre à jour progressivement votre contrôle. Après cela, il n'est pas nécessaire de lier le service. –
@AntonioJ. la responsabilité du service est de charger des éléments de la base de données et de ne pas mettre à jour l '«interface utilisateur». – tarrsalah