GlazedLists et JTable avec de multiples sources
-
27-09-2019 - |
Question
J'ai 3 ArrayList
s et un JTable
.
Je voudrais pouvoir ajouter / modifier des éléments / retirer de la sélectionné (de l'un des 3) ArrayList
en sélectionnant les éléments dans le JTable
et par exemple en cliquant sur un bouton.
Je le code pour utiliser un seul ArrayList
:
/* ... */
EventList<MyClass> eventList = GlazedLists.eventList(myFirstArrayList);
SortedList<MyClass> sortedList = new SortedList<MyClass>(eventList, null);
filterList = new FilterList<MyClass>(sortedList);
EventTableModel<MyClass> listModel = new EventTableModel<MyClass>(filterList,
myTableFormat);
table.setModel(listModel);
TableComparatorChooser.install(table, sortedList,
AbstractTableComparatorChooser.MULTIPLE_COLUMN_MOUSE);
selectionModel = new EventSelectionModel<MyClass>(filterList);
table.setSelectionModel(selectionModel);
/* ... */
Comment pourrais-je changer le source de la EventList
ou FilterList
au 2. ou 3. ArrayList
donc si je modifier le EventList
il modifiera la ArrayList
source aussi?
La solution
Pour autant que je sache, les listes vitrés ne traitera pas propager des changements dans vos listes d'événements retourner à ArrayLists sous-jacents. En fait, dans votre exemple, votre liste d'événements et une liste de tableau ne sont pas liés de quelque façon - la liste des événements ne contient que tous les mêmes éléments que la liste de tableau. Voir la javadoc pour l'assistant statique GlazedLists.eventList ici
Qu'est-ce que vous voulez sans doute faire est d'installer un écouteur sur votre liste d'événements et propagez des modifications à votre liste de tableau. De plus, assurez-vous que vous manipuler la liste des événements en réponse à l'interface graphique des événements de suppression. Si vous modifiez la liste des filtres les événements ne se propage pas en arrière à la liste des événements.