如果我们想根据某一列来过滤记录,如何实现呢?很简单,定义一个过滤器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前加入这个过滤器
publicclassMyFilterextendsViewerFilter{ publicbooleanselect(Viewerviewer,ObjectparentElement,Objectelement)
{ Peoplep=(People)element; returnp.getName().startsWith("张1"); } }
tableViewer.addFilter(newMyFilter());
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的基本的东西介绍的差不多了 四:在现实的开发中,我们更多的是喜欢把一些简单的类用匿名类或者内部类的方式来实现。像之前例子中每个都单独一个类的情况并不多。
本文介绍如何使用SWT中的TableViewer进行数据过滤及如何改变特定记录的颜色。通过定义过滤器实现记录的筛选,并展示了如何使用简单的代码高亮显示指定的表格项。

1943

被折叠的 条评论
为什么被折叠?



