Java JFace ViewerFilter表
我在筛选表时遇到问题。我正在使用ViewerFilter并重写select方法来调整该表。Filtertext本身通过文本字段输入。 现在来谈谈我的问题。例如,我的表格如下所示: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,两行应该仍然可见。这里的问题是,我在输入每个字符后
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;
}
所以我试着过滤掉这个方法的主要成分。我可以访问未筛选的表吗 向我们展示相关代码我更新了它。请帮助: