Domanda

Ho 3 ArrayLists e un JTable.
Mi piacerebbe essere in grado di aggiungere / modificare gli elementi / rimuovere dalla selezionato (da uno dei 3) ArrayList selezionando gli elementi nel JTable e, ad esempio, facendo clic su un pulsante.

Ho questo codice per l'utilizzo di un solo 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);
/* ... */

Come potrei cambiare il fonte del EventList o FilterList al 2. o 3. ArrayList quindi se ho modificare il EventList che modificherà la ArrayList fonte troppo?

È stato utile?

Soluzione

Per quanto ne so, liste invetriata non sarà gestire la propagazione delle modifiche nei vostri elenchi di eventi di nuovo al vostro ArrayLists sottostanti. Infatti, nel tuo esempio l'elenco degli eventi e lista di array non sono collegati in alcun modo - l'elenco eventi contiene solo tutti gli stessi elementi come la lista di array. Consultare Javadoc per l'assistente GlazedLists.eventList statica qui

Quello che probabilmente vuole fare è installare un ascoltatore sulla vostra lista degli eventi e propagare eventuali modifiche all'elenco array. Assicurarsi inoltre che di manipolare l'elenco degli eventi in risposta a GUI cancellazione eventi. Se si modifica l'elenco di filtri gli eventi non si propagheranno all'indietro per l'elenco degli eventi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top