如果我们想根据某一列来过滤记录,如何实现呢?很简单,定义一个过滤器filter。这里只演示定义一个过滤器的情况。 现实中你可以定义多个灵活的过滤器,通过替换过滤器来实现各种各样的过滤。 一、过滤器代码:
importorg.eclipse.jface.viewers.Viewer; importorg.eclipse.jface.viewers.ViewerFilter;
publicclassMyFilterextendsViewerFilter{ publicbooleanselect(Viewerviewer,ObjectparentElement,Objectelement)
{ Peoplep=(People)element; returnp.getName().startsWith("张1"); } }
然后在testTableViewer的shell.open前加入这个过滤器
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/9b8a8a44dd1c74ae49c20a7cd451974e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/9b8a8a44dd1c74ae49c20a7cd451974e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
Colorcolor=Display.getDefault().getSystemColor(SWT.COLOR_RED); table.getItems()[table.getItemCount()-1].setBackground(color); table.redraw();
三、这里提一下,使用tabeViewer.setUseHashlookup(true)可以在tableviewer内部为数据记录和 tableItem之间的映射创建一个hash表,这样可以加快tableItem的和记录间的查找速度,注意,这条语句必须在setInput之前加入 才有效。 好了,到此tableviewer的基本的东西介绍的差不多了 四:在现实的开发中,我们更多的是喜欢把一些简单的类用匿名类或者内部类的方式来实现。像之前例子中每个都单独一个类的情况并不多。