SwingX项目中的JXTable
有一种方法可以直接在RowFilter
上设置JXTable
(参见JXTable#setRowFilter
)。
当过滤器实现是动态的时,我不清楚你需要做什么。
比较:在JDK中,他们在JDK1.6中引入了RowSorter
接口,并且此接口允许附加RowSorterListener
。如果您有动态RowSorter
(也可用于过滤),则可以在过滤器更改时向这些侦听器触发事件(尽管这要求过滤器可以访问RowSorter
不是JDK中的DynamicRowFilter
或RowFilterEvent
。
我期望的是我可以在RowFilter
上设置“可观察的”JXTable
并且我不得不做任何事情。但是,由于目前的API似乎无法做到这一点,下一个最好的事情是什么呢?
JXTable
上设置的实例完全相同?setRowFilter
方法并创建自己的TableRowSorter
并重新使用JDK API。答案 0 :(得分:3)
我们使用的用例是一个过滤器(不是行过滤器)可以更改为过滤掉模型的元素,我们有一个基于该动态过滤器的RowFilter来过滤掉这些元素
重复我的评论:RowFilter必须是不可变的。当排序/过滤被引入核心时,这是一个有意义的设计决策。因此实现“动态”过滤的方法是
修改强>
我不同意这种设计,但不能动摇他
应该是:我不同意 - 同时,我不像以前那样确定; - )
这种方法的优点是RowFilter实际上是一个很小的硬币实现和高度可重用 - 只是一个简单的谓词,没有别的。这允许简单的逻辑复合(和/或)滤波器。没有负担通知部分过滤器,分拣机(或复合过滤器)的一部分没有负担来监听和更新自身。然后考虑到过滤器更改的“动态”通常来自用户交互,某些东西必须听取这些用户触发器,创建新的rowFilter与更新一个并不是什么大不了的事。现有的rowFilter。