KTable的簡單入門

KTable 採用的是適配器模式,由於就表現形式來講,KTable採用的是表格方式展示數據,樣式基本固定,而數據來源則千差萬別:ListHashMapXML文件、數據庫等等,所以採用適配器模式,在數據來源和表現形式之間架起一座橋樑,使得數據能夠正確的顯示出來。
KTable 的用法很是簡單:
@Override
public void createPartControl(Composite parent) {
    // 建立 Table
    table = new KTable(parent, SWT. FULL_SELECTION | SWT. MULTI | SWT. V_SCROLL
            | SWT. H_SCROLL | SWTX. FILL_WITH_LASTCOL | SWTX. EDIT_ON_KEY );
   
    // 設置 Table 顯示樣式並顯示數據
    table .setModel( new TableDetail());
}
 
上面用兩行代碼就完成了一個KTable的建立與顯示,其中第二行代碼就是設置一個適配器對象,用來設置表現形式,生成顯示數據的,代碼以下:
public class TableDetail extends KTableDefaultModel {
    private final FixedCellRenderer m_fixedRenderer = new FixedCellRenderer(
            FixedCellRenderer. STYLE_FLAT
                    | TextCellRenderer. INDICATION_FOCUS_ROW );
 
    private final TextCellRenderer m_textRenderer = new TextCellRenderer(
            TextCellRenderer. INDICATION_FOCUS_ROW );
 
    public TableDetail() {
        initialize();
    }
 
    @Override
    public KTableCellEditor doGetCellEditor( int col, int row) {
        return null ;
    }
 
    @Override
    public KTableCellRenderer doGetCellRenderer( int col, int row) {
        if (isFixedCell(col, row))
            return m_fixedRenderer ;
 
        return m_textRenderer ;
    }
 
    @Override
    public int doGetColumnCount() {
        return 3;
    }
 
    @Override
    public Object doGetContentAt( int col, int row) {
        switch (col) {
        case 0:
            return "First" ;
        case 1:
            return "Second" ;
        default :
            return "Third" ;
        }
    }
 
    @Override
    public int doGetRowCount() {
        return 3;
    }
 
    @Override
    public void doSetContentAt( int col, int row, Object value) {
        //content.put(col + "/" + row, value);
    }
 
    @Override
    public int getInitialColumnWidth( int column) {
        return 90;
    }
 
    @Override
    public int getInitialRowHeight( int row) {
        return 20;
    }
 
    @Override
    public int getFixedHeaderColumnCount() {
        return 0;
    }
 
    @Override
    public int getFixedHeaderRowCount() {
        return 1;
    }
 
    @Override
    public int getFixedSelectableColumnCount() {
        return 0;
    }
 
    @Override
    public int getFixedSelectableRowCount() {
        return 0;
    }
 
    @Override
    public int getRowHeightMinimum() {
        return 18;
    }
 
    @Override
    public boolean isColumnResizable( int col) {
        return true ;
    }
 
    @Override
    public boolean isRowResizable( int row) {
        return false ;
    }
 
}
 
TableDetail 類繼承自 KTableDefaultModel ,繼承自父類的函數說明以下:
函數名稱
說明
doGetCellEditor
獲得指定單元格的編輯器
doGetCellRenderer
獲得指定單元格的繪製器
doGetColumnCount
獲得表格列數量
doGetRowCount
獲得表格行數量
doGetContentAt
獲得指定單元格數據,這些單元格不包括固定行、列的數據
doSetContentAt
設置指定單元格數據
getInitialColumnWidth
初始化指定列寬度
getInitialRowHeight
初始化指定行高度
getFixedHeaderColumnCount
獲得標題列數量
getFixedHeaderRowCount
獲得標題行數量
getFixedSelectableColumnCount
 
getFixedSelectableRowCount
 
getRowHeightMinimum
獲得最小行高度
isColumnResizable
列是否容許 Resize
isRowResizable
行是否容許 Resize
 
以上這些函數做爲標準接口,由 KTable 類在繪製表格的時候調用,所以須要在這些接口內根據本身的實際狀況進行相應處理。
相關文章
相關標籤/搜索