GlazedLists 和 JTable 具有多个来源
-
27-09-2019 - |
题
我有 3 个 ArrayList
和一个 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
也?
解决方案
据我所知,Glazed Lists 不会处理将事件列表中的更改传播回底层 ArrayLists。事实上,在您的示例中,您的事件列表和数组列表没有以任何方式链接——事件列表仅包含与数组列表相同的所有项目。请参阅 GlazedLists.eventList 静态帮助器的 javadoc 这里
您可能想要做的是在事件列表上安装一个侦听器并将任何更改传播到数组列表。还要确保您操作事件列表以响应 GUI 删除事件。如果您修改过滤器列表,事件将不会向后传播到事件列表。
不隶属于 StackOverflow