2017-02-27 11 views
0

NatTableフィルタで正規表現を使用することに興味があります。私は、以下の便利なリンクに基づいて私のコードを設定している:NatTable Regexを使用したフィルタ

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

フィルタリングは、特定の状況で動作するように見えますが、他の状況では機能しないようです。たとえば、「This is a Test」というデータを持つセルがあるとします。 * t式を使うと、行(これは私が期待しているもの)を見つけることになります。 * x式を使用すると、行が見つかりません(これは私が期待しているものです)。 ^(123)という式を使用すると、行が見つかりません(これは私が期待しているものではありません)。間違っていることをしていますか?

ありがとうございます!

答えて

1

問題は正規表現にあると思います。カーディナリティが欠落しているようです。 [^ 123]を使用すると、期待どおりに動作します。

たとえば、_6031_GlazedListsFilterExampleをテストしてHousenumber列に[^ abc]を挿入すると、1桁の値しか持たないすべてのエントリが表示されます。 *すべての行を追加すると表示されます。

関連する問題