2013-06-07 4 views
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; 
     } 
    }; 
    } 
} 

Répondre

2

Comment avez-vous défini votre service?

Essayez quelque chose comme:

public class MyService extends Service<ObservableList<TodoTAsk>> 
+0

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

+0

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. –

+0

@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

Questions connexes