使用正则表达式进行NatTable过滤器

时间:2017-02-27 18:35:01

标签: nattable

我对在NatTable过滤器中使用正则表达式感兴趣。我已根据以下有用链接设置了我的代码:

http://www.vogella.com/tutorials/NatTable/article.html#exercise-adding-a-filter-functionality-to-a-nattable

https://www.eclipse.org/forums/index.php/t/1069806/

从我可以收集的内容来看,它基本上归结为将以下代码添加到现有的过滤器中:

    FilterRowHeaderComposite<T> filterRowHeaderLayer = new
      FilterRowHeaderComposite<>(filterStrategy,
            sortHeaderLayer, columnHeaderDataLayer.
            getDataProvider(), configRegistry);

    int rowNum = 2;

    configRegistry.registerConfigAttribute(EditConfigAttributes.CELL_EDITOR,
      new FilterRowTextCellEditor(), DisplayMode.NORMAL, 
      FilterRowDataLayer.FILTER_ROW_COLUMN_LABEL_PREFIX + rowNum);

    configRegistry.registerConfigAttribute(FilterRowConfigAttributes.
      TEXT_MATCHING_MODE, TextMatchingMode.REGULAR_EXPRESSION, 
      DisplayMode.NORMAL,           
      FilterRowDataLayer.FILTER_ROW_COLUMN_LABEL_PREFIX + rowNum);

    configRegistry.registerConfigAttribute(CellConfigAttributes.
      DISPLAY_CONVERTER, new FilterRowRegularExpressionConverter(), 
      DisplayMode.NORMAL,            
      FilterRowDataLayer.FILTER_ROW_COLUMN_LABEL_PREFIX + rowNum);

过滤似乎在某些情况下有效,而在其他情况下无效。例如,假设我有一个包含数据的单元格&#34;这是一个测试&#34;。如果我使用表达式* t,它将找到行(这是我所期望的)。如果我使用表达式* x,它将找不到行(这是我所期望的)。如果我使用表达式^(123)它将找不到行(这不是我所期望的)。我做错了吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

我认为问题出在正则表达式中。似乎缺少基数。使用[^ 123] *它可以按预期工作。

例如,如果您测试_6031_GlazedListsFilterExample并为Housenumber列插入[^ abc],您将看到所有只有一位数值的条目。显示添加*所有行。