我试图同时将两种不同类型的过滤应用于NatTable。每个过滤器本身都可以正常工作,但它们在组合时不像我预期的那样工作。
下面是一些基本的代码片段,显示了我的设置.
public void basicSetup() {
eventList = GlazedLists.eventList(values);
TransformedList<T, T> rowObjectsGlazedList = GlazedLists.
threadSafeList(eventList);
sortedList = new SortedList<>(rowObjectsGlazedList, myComparator<>());
filterList = new FilterList<>(sortedList);
//... code ommitted
FilterRowHeaderComposite<T> filterRowHeaderLayer = new
FilterRowHeaderComposite<>(
new DefaultGlazedListsFilterStrategy<T>(bodyLayerStack.
getFilterList(), columnPropertyAccessor, configRegistry),
sortHeaderLayer, columnHeaderDataLayer.getDataProvider(),
configRegistry);
}
public void applyExternalFilter() {
getBodyLayerStack().getFilterList().setMatcher(myCriteria);
}
public void resetExternalFilter() {
getBodyLayerStack().getFilterList().setMatcher(null);
}任何帮助都将不胜感激。谢谢!
发布于 2016-11-30 07:58:48
您正在尝试通过筛选行将编程应用过滤器与用户应用过滤器混合使用。由于筛选器行处理的是FilterList上的匹配器,因此这种方法不能工作,也不可能确定哪些过滤器是由谁添加的。
要支持将静态过滤器与用户定义的过滤器混合使用,您需要使用支持添加附加静态过滤器的DefaultGlazedListsStaticFilterStrategy。
NatTable示例应用程序->教程示例-> GlazedLists -> Filter -> GlazedListsStaticFilterExample (_6033_GlazedListsStaticFilterExample.java)中提供了一个示例。
DefaultGlazedListsStaticFilterStrategy filterStrategy = new DefaultGlazedListsStaticFilterStrategy(
bodyLayerStack.getFilterList(),
columnPropertyAccessor,
configRegistry);
FilterRowHeaderComposite filterRowHeaderLayer =
new FilterRowHeaderComposite(
filterStrategy,
columnHeaderLayer,
columnHeaderDataLayer.getDataProvider(),
configRegistry);然后,可以通过以下方式应用静态过滤器
filterStrategy#addStaticFilter(Matcher);目前没有明确的方法可用。只能删除以前应用的筛选器。但是,可以自由地创建一个用于清除和提供修补程序的增强票证。
https://stackoverflow.com/questions/40871988
复制相似问题