Swt/Jface tableviewer 加入filter ,改變行的顏色

snoopy7713發表於2011-12-06

 

 如果我們想根據某一列來過濾記錄,如何實現呢?很簡單,定義一個過濾器filter。這裡只演示定義一個過濾器的情況。
現實中你可以定義多個靈活的過濾器,通過替換過濾器來實現各種各樣的過濾。
一、過濾器程式碼:


import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerFilter;

public class MyFilter extends ViewerFilter {
    public boolean select(Viewer viewer, Object parentElement, Object element) {
        People p = (People) element;
        return p.getName().startsWith("張1");
    }
}然後在testTableViewer的shell.open前加入這個過濾器
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

相關文章