我想在SWT/JFace应用程序中添加一个搜索功能,当用户在搜索文本字段中输入文本时,该功能会过滤TableViewer.
final Text filterText = new Text(parent, SWT.NONE);
filterText.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent arg0) {
//TODO how to update the viewer filter with the new text ?
}
});
TableViewer tableViewer = new TableViewer(...);
ViewerFilter filterViewer = new ViewerFilter() {
@Override
public boolean select(Viewer viewer, Object parentElement, Object element) {
if (filterText.getText() == "") {
return true;
}
//do my stuff to know if element need to be filtered or not
return false;
}
};
tableViewer.addFilter(filterViewer);
Run Code Online (Sandbox Code Playgroud)
我是否需要删除过滤器并在修改侦听器中创建一个新过滤器,还是有更好的解决方案?
基本上,您需要有一种方法将输入的文本传递到过滤器,在您的选择方法中,您应该根据此文本进行过滤,并在文本小部件的侦听器中将文本传递到过滤器并调用您的表viewer.refresh()。
这个例子应该对您有帮助:http://www.vogella.com/tutorials/EclipseJFaceTableAdvanced/article.html#jfacetable_filter
| 归档时间: |
|
| 查看次数: |
8532 次 |
| 最近记录: |