Java JFace ViewerFilter表

Java JFace ViewerFilter表,java,filter,swt,tableviewer,Java,Filter,Swt,Tableviewer,我在筛选表时遇到问题。我正在使用ViewerFilter并重写select方法来调整该表。Filtertext本身通过文本字段输入。 现在来谈谈我的问题。例如,我的表格如下所示: column 123 124 在my textfield中,用户可以输入columnname=data1、data2以显示所有数据为data1或data2的行。因此,在我上面的示例中,如果用户输入column=123124,两行应该仍然可见。这里的问题是,我在输入每个字符后

我在筛选表时遇到问题。我正在使用ViewerFilter并重写select方法来调整该表。Filtertext本身通过文本字段输入。 现在来谈谈我的问题。例如,我的表格如下所示:

      column
       123  
       124
在my textfield中,用户可以输入columnname=data1、data2以显示所有数据为data1或data2的行。因此,在我上面的示例中,如果用户输入column=123124,两行应该仍然可见。这里的问题是,我在输入每个字符后刷新tableviewer。因此,当用户输入column=123时,表中只显示一列。将124添加到filtertext时,我会筛选已筛选的表。因此,没有数据显示在最后。如何仍能过滤原始表格数据

@Override
public boolean select(final Viewer viewer, final Object parentElement, final Object element) {
    final String filterString = filterText.getText().toLowerCase();
    if (filterString.length() == 0) { return true; }

    final mydata myData= (mydata) element;
    if (filterString.matches("columnName" + ".+")) {
    index = filterString.indexOf("columnName" + ".+");
   evaluateText(myData, filterString, i, index + tableColumnsText[i].length())  
}

public boolean evaluateText(final mydata data, final String filterText, final int beginningIndex) {
        subString = filterText.substring(beginningIndex, filterText.length());
        return evaluateString(data.getString(), subString);
}


public boolean evaluateString(final String cellString, final String commaString) {
    int countSubstrings = 0;
    final String[] items = commaString.split(",");
    countSubstrings = items.length;

    for (final String s : items) {
        if (s.length() != 0) {
            if (!cellString.contains(s)) { return false; }
        }
    }
    return true;
}

所以我试着过滤掉这个方法的主要成分。我可以访问未筛选的表吗

向我们展示相关代码我更新了它。请帮助: