【问题标题】:GlazedLists and JTable with multiple sources具有多个来源的 GlazedLists 和 JTable
【发布时间】:2010-10-04 15:37:21
【问题描述】:

我有 3 个ArrayLists 和一个JTable
我希望能够通过选择JTable 中的元素并例如单击一个按钮,从 selected(来自 3 个之一)ArrayList 添加/编辑/删除元素。

我有这个代码只使用一个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);
/* ... */

如何将EventListFilterList 更改为2. 或3. ArrayList 所以如果我编辑EventList 它将修改源ArrayList也是?

【问题讨论】:

  • 我想澄清一下,在第二行中,var 'list' 应该是 'eventList' 吗?
  • 是的,应该是eventList。编辑了问题。

标签: java jtable glazedlists


【解决方案1】:

据我所知,Glazed Lists 不会处理将事件列表中的更改传播回底层 ArrayLists。事实上,在您的示例中,您的事件列表和数组列表没有以任何方式链接 - 事件列表只包含与数组列表相同的所有项目。请参阅 GlazedLists.eventList 静态帮助程序的 javadoc here

您可能想要做的是在您的事件列表上安装一个侦听器并将任何更改传播到您的数组列表。还要确保您操作事件列表以响应 GUI 删除事件。如果您修改过滤器列表,事件将不会向后传播到事件列表。

【讨论】:

    猜你喜欢
    • 2010-12-10
    • 2013-05-30
    • 2020-04-26
    • 2015-01-06
    • 2015-03-20
    • 1970-01-01
    • 2012-06-04
    • 2010-11-10
    • 2014-05-02
    相关资源
    最近更新 更多