NatTable过滤

时间:2016-11-29 17:23:37

标签: java nattable

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

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

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

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);
}

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

1 个答案:

答案 0 :(得分:1)

您正尝试通过过滤器行将编程应用的过滤器与用户应用的过滤器混合使用。这不起作用,因为过滤器行处理FilterList上的匹配器,并且无法识别由谁添加哪些过滤器。

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

NatTable示例应用程序 - &gt;中提供了一个示例。教程示例 - &gt; GlazedLists - &gt;过滤器 - &gt; GlazedListsStaticFilterExample (_6033_GlazedListsStaticFilterExample.java)

DefaultGlazedListsStaticFilterStrategy filterStrategy = new DefaultGlazedListsStaticFilterStrategy(
                    bodyLayerStack.getFilterList(),
                    columnPropertyAccessor,
                    configRegistry);

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

然后可以通过

应用静态过滤器
filterStrategy#addStaticFilter(Matcher);

目前尚无明确的方法。只能删除以前应用的过滤器。但随意创建一个清除增强票并提供补丁。