java JavaFX取消过滤器过滤器过滤器列表
我有一个ObservableList
,我将它链接到多个CheckMenuItem
,它显示在一个TableView
中,我可以过滤出一个谓词
我使用.filter(Predicate p)
并将我的TableView
更新为它的返回值。当我想取消筛选时,我只需将其设置回我的ObservableList
但是我不知道如何将多个过滤器删除到我的ObservableList
。如果我在返回的列表上继续使用.filter(Predicate p)
和不同的谓词,我就可以应用它们,但是如何删除一个特殊的过滤器呢
问候
# 1 楼答案
代码
相当于
代码呢
逻辑上等同于
因此,您可以通过保留对筛选列表的引用并更新其谓词来实现所需的功能:
现在,您只能在以下情况下使用
predicate1
:添加
predicate2
:删除
predicate1
:移除所有过滤器:
如果您想要一个真正深奥的解决方案(这几乎肯定是多余的),您可以保留一个
ObservableList<Predicate<DataType>>
:然后将筛选列表的谓词绑定为将所有筛选器与逻辑
and
组合:然后,您只需在
filters
列表中添加和删除谓词,例如表格数据将自动更新