Swt/Jface tableviewer入门教程四(加入filter ,改变行的颜色)

时间:2023-01-18 16:00:24
 

如果我们想根据某一列来过滤记录,如何实现呢?很简单,定义一个过滤器filter。这里只演示定义一个过滤器的情况。
现实中你可以定义多个灵活的过滤器,通过替换过滤器来实现各种各样的过滤。
一、过滤器代码:

Swt/Jface tableviewer入门教程四(加入filter ,改变行的颜色)import  org.eclipse.jface.viewers.Viewer;
Swt/Jface tableviewer入门教程四(加入filter ,改变行的颜色)
import  org.eclipse.jface.viewers.ViewerFilter;
Swt/Jface tableviewer入门教程四(加入filter ,改变行的颜色)
Swt/Jface tableviewer入门教程四(加入filter ,改变行的颜色)Swt/Jface tableviewer入门教程四(加入filter ,改变行的颜色)
public   class  MyFilter  extends  ViewerFilter  {
Swt/Jface tableviewer入门教程四(加入filter ,改变行的颜色)Swt/Jface tableviewer入门教程四(加入filter ,改变行的颜色)    
public boolean select(Viewer viewer, Object parentElement, Object element) {
Swt/Jface tableviewer入门教程四(加入filter ,改变行的颜色)        People p 
= (People) element;
Swt/Jface tableviewer入门教程四(加入filter ,改变行的颜色)        
return p.getName().startsWith("张1");
Swt/Jface tableviewer入门教程四(加入filter ,改变行的颜色)    }

Swt/Jface tableviewer入门教程四(加入filter ,改变行的颜色)}
然后在testTableViewer的shell.open前加入这个过滤器
Swt/Jface tableviewer入门教程四(加入filter ,改变行的颜色)tableViewer.addFilter( new  MyFilter());
好了,看一下效果
二、如果我们想凸显某一条记录,想改变一下它的颜色,如果实现呢,简单,只要几句话就可以了。
Color color  =  Display.getDefault().getSystemColor(SWT.COLOR_RED);
table.getItems()[table.getItemCount()
- 1 ].setBackground(color);
table.redraw();

三、这里提一下,使用tabeViewer.setUseHashlookup(true)可以在tableviewer内部为数据记录和tableItem之间的映射创建一个hash表,这样可以加快tableItem的和记录间的查找速度,注意,这条语句必须在setInput之前加入才有效。
好了,到此tableviewer的基本的东西介绍的差不多了
source下载: http://www.blogjava.net/Files/dreamstone/jface-4.rar
四:在现实的开发中,我们更多的是喜欢把一些简单的类用匿名类或者内部类的方式来实现。像之前例子中每个都单独一个类的情况并不多。
下边是和前边的source效果等同的source,不过是使用了匿名类和内部类。
http://www.blogjava.net/Files/dreamstone/jface-5.rar