2014-08-27 5 views
0

Une autre question de moi. Ne sais pas si je suis trop stupide pour utiliser Google correctement mais je ne l'ai pas trouvé la réponse à celle-ci:JavaFX ObservableList liaison à sous-liste

J'ai deux ObservableLists

public static ObservableList<ImageData> datas_all, datas_flickr; 

Tous les objets datas_flickr sont contenus dans datas_all (datas_flickr est sous-ensemble de datas_all). J'ai une interface graphique avec deux onglets différents. Les deux onglets contiennent TableViews. Un TableView affiche les données de datas_all et d'autres TableView affiche les données de datas_flickr.

Les deux onglets ont un bouton de suppression qui supprime l'objet sélectionné dans le TableView correspondant. Maintenant, je me demande s'il existe un moyen facile de lier des objets dans datas_flickr avec leurs objets correspondants dans datas_all?

Répondre

2

Bidirectional Binding ne fonctionnera pas dans votre cas, car il a besoin de la ObservableList pour contenir les mêmes données

Vous pouvez y parvenir en utilisant le ListChangeListener sur le datas_flickr

travail Exemple

import javafx.collections.FXCollections; 
import javafx.collections.ListChangeListener; 
import javafx.collections.ObservableList; 

public class SubListBinding { 

    public static void main(String[] args) { 
     ObservableList<String> list = FXCollections.observableArrayList(); 
     ObservableList<String> subList = FXCollections.observableArrayList(); 
     list.addAll("a", "b", "c"); 
     subList.addAll("x", "y", "z"); 
     list.addAll(subList); 
     subList.addListener(new ListChangeListener<String>() { 
      public void onChanged(Change<? extends String> c) { 
       while (c.next()) { 
        if (c.wasPermutated()) { 
         for (int i = c.getFrom(); i < c.getTo(); ++i) { 
           //permutate 
         } 
        } else if (c.wasUpdated()) { 
           //update item 
        } else { 
         for (String remitem : c.getRemoved()) { 
          list.remove(remitem); 
         } 
         for (String additem : c.getAddedSubList()) { 
          list.add(additem); 
         } 
        } 
       } 
      } 
     }); 
     System.out.println("Before removal.."); 
     System.out.println("List : " + list); 
     System.out.println("SubList : " + subList); 
     System.out.println("After removal.."); 
     subList.remove("y"); 
     System.out.println("List : " + list); 
     System.out.println("SubList : " + subList); 
    } 

} 

De même, vous pouvez faire de même sur datas_all

+0

Merci mais je viens de résoudre mon problème il y a 30 secondes. : D Désolé –

Questions connexes