我想创建具有排序和过滤功能的用户视图(表)。我使用EventList(玻璃列表)作为EventTableModel的源。在GlazedLists中也有Sorted List和一些过滤项,因此我可以使用它们来创建视图。但是我发现JXTable并具有排序和过滤的方法,这就是我希望它如何工作:排序和过滤必须提供UI组件和模型才能容纳数据: 通用标签

但是GlazedLists还提供SortedList(EventList的带排序功能的装饰器)和一些过滤方法。 通用标签

问题是:哪种模型更好。也许两者都是错误的,创建视图有什么用?

有帮助吗?

解决方案

我投票给GlazedLists,因为它有效。是的,您与表一起使用的TableModel与视图紧密耦合,但是您从源数据中解耦该表模型。

GlazedLists的排序和筛选功能比JXTable上的功能更加灵活。只要确保您没有同时打开它们,否则事情会变得混乱。这是我在JXTable中使用SortedList的常用代码段: 通用标签

这是做什么的

  • 打开JXTable右上方的列选择器小工具
  • 关闭JXTable的内置排序
  • 改为安装GlazedLists的排序功能
  • 使用从TableFormat派生的EventTableModel设置表

    请注意,您传入了两个 事件列表,一个displayItems(它是管道末尾的列表)和一个sortedList(用于控制哪一列用于排序),可以在列表的更早位置进行传递。管道比displayItems列表要好。 (如果您的最后一个元素是sortedList,此后未进行任何处理,则只需将列表传递两次。)

其他提示

如果您使用DefaultEventTableModel,则一切正常。当模型在EventList源上注册排序器时。它在内部完成,如您的第二条清单中所示。如果您手动注册分类器,则必须实现所有代码才能更改比较器(例如asc,desc)。尝试使用相同的过滤器时,但是JXTable imho不支持此机制,因此您必须以自己的方式进行。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top