首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NatTable滤波

NatTable滤波
EN

Stack Overflow用户
提问于 2016-11-29 17:23:37
回答 1查看 1.1K关注 0票数 0

我试图同时将两种不同类型的过滤应用于NatTable。每个过滤器本身都可以正常工作,但它们在组合时不像我预期的那样工作。

  • 我做的第一件事是调用FilterList.setMatcher(),根据外部条件减少行数
  • 接下来我要做的是使用FilterRowHeaderComposite来应用进一步的过滤,但是它似乎忽略了输入(即使我在过滤器头单元格中看到了输入/图标),并且没有应用过滤器。

下面是一些基本的代码片段,显示了我的设置.

代码语言:javascript
复制
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);
}

任何帮助都将不胜感激。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-30 07:58:48

您正在尝试通过筛选行将编程应用过滤器与用户应用过滤器混合使用。由于筛选器行处理的是FilterList上的匹配器,因此这种方法不能工作,也不可能确定哪些过滤器是由谁添加的。

要支持将静态过滤器与用户定义的过滤器混合使用,您需要使用支持添加附加静态过滤器的DefaultGlazedListsStaticFilterStrategy

NatTable示例应用程序->教程示例-> GlazedLists -> Filter -> GlazedListsStaticFilterExample (_6033_GlazedListsStaticFilterExample.java)中提供了一个示例。

代码语言:javascript
复制
DefaultGlazedListsStaticFilterStrategy filterStrategy = new DefaultGlazedListsStaticFilterStrategy(
                    bodyLayerStack.getFilterList(),
                    columnPropertyAccessor,
                    configRegistry);

FilterRowHeaderComposite filterRowHeaderLayer =
        new FilterRowHeaderComposite(
                filterStrategy,
                columnHeaderLayer,
                columnHeaderDataLayer.getDataProvider(),
                configRegistry);

然后,可以通过以下方式应用静态过滤器

代码语言:javascript
复制
filterStrategy#addStaticFilter(Matcher);

目前没有明确的方法可用。只能删除以前应用的筛选器。但是,可以自由地创建一个用于清除和提供修补程序的增强票证。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40871988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档