Глазедисты и JTable с несколькими источниками
-
27-09-2019 - |
Вопрос
у меня 3 ArrayList
S и A. JTable
.
Я хотел бы быть в состоянии добавить / редактировать / удалить элементы из выбранный (от одного из 3) ArrayList
Выбрав элементы в JTable
А например, щелкнув на кнопку.
У меня есть этот код для использования только одного 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);
/* ... */
Как я могу изменить источник из EventList
или FilterList
к 2. или 3. ArrayList
так что если я редактирую EventList
Это изменит источник ArrayList
слишком?
Решение
Насколько я знаю, глазурованные списки не будут справиться с размножественными изменениями в вашем мероприятии списков обратно к вашим основным араям. Фактически, в вашем примере вашего списка событий и список массива не связаны ни в одном случае - список событий просто содержит все те же элементы, что и список массива. Смотрите Javadoc для глазедистов. EventList статический помощник здесь
Что вы, вероятно, хотите сделать, это установить слушатель в списке событий и распространять любые изменения в свой список массивов. Также убедитесь, что вы управляете списком событий в ответ на события удаления GUI. Если вы измените список фильтров, события не распространяются назад в список событий.