2016-03-30 45 views
0

我使用的星雲網格包含一些文本,圖像和複選框在不同的列。如果我想將文本和圖像映射到模型,我可以簡單地分別使用來自jface的ITableLabelProvidergetColumnText(Object e1, int c1)getColumnImages(Object e1, int c1)如何爲星雲網格中的複選框設置labelprovider?

我想知道是否有類似的方式來設置基於星雲網格模型的複選框狀態?上來看,我可以設置這個如下:

GridItem item = grid.getItem(3); 
item.setChecked(2, true); 

回答

0

我使用的ITableLabelProvidergetColumnImages(Object element, int columnIndex)方法添加的複選框。我發現了一些已選中和未選中的複選框的圖片,並在此方法中設置了選擇邏輯。它在那裏被描述爲http://www.vogella.com/tutorials/EclipseJFaceTable/article.html#jfaceeditor

然後我實現了編輯支持列編輯和它的方法getCellEditor(Object element)我設置CheckboxCellEditor作爲複選框列的返回值。

public class CheckboxColumnEditor extends EditingSupport { 
    private GridTreeViewer gridViewer; 

    //... 

    @Override 
    protected void setValue(Object element, Object value) { 
    //... 

    getViewer().update(element, null); 
    } 

    @Override 
    protected Object getValue(Object element) { 
    //... 
    } 

    @Override 
    protected CellEditor getCellEditor(Object element) { 
    //... 
    return new CheckboxCellEditor(gridViewer.getGrid());  
} 
@Override 
protected boolean canEdit(Object element) { 
    //... 
} 
} 

然後列創建代碼:

GridColumn column = new GridColumn(parent, SWT.CENTER); 
//... 
GridViewerColumn gvc = new GridViewerColumn(gridViewer, column); 
gvc.setLabelProvider(new ColumnLabelProvider()); 
gvc.setEditingSupport(new CheckboxColumnEditor()); 

看一看這個答案https://stackoverflow.com/a/13259350/1903580。介紹了添加複選框的兩種方法。

+0

在vogella文章中,他們使用JFace Table,它不提供複選框支持(除了CheckboxTableViewer,它只在每行之前放置複選框)。但星雲網格確實提供了這種支持。這就是爲什麼我不認爲被強制使用複選框圖像應該是在視圖上如此輕鬆地完成調用'GridView'上的'setChecked()'的唯一方法。 – Shafi

相關問題