Java 如何为星云网格中的复选框设置labelprovider?
我使用了一个星云网格,它在不同的列中包含一些文本、图像和复选框。如果我想将文本和图像映射到模型,我只需分别使用jface的ITableLabelProvider中的Java 如何为星云网格中的复选框设置labelprovider?,java,gridview,swt,nebula,Java,Gridview,Swt,Nebula,我使用了一个星云网格,它在不同的列中包含一些文本、图像和复选框。如果我想将文本和图像映射到模型,我只需分别使用jface的ITableLabelProvider中的getColumnText(对象e1,int c1)和getColumnImages(对象e1,int c1) 我想知道是否有类似的方法可以根据星云网格中的模型设置复选框状态?在视图中,我可以如下设置: GridItem item = grid.getItem(3); item.setChecked(2, true); 我使用ITa
getColumnText(对象e1,int c1)
和getColumnImages(对象e1,int c1)
我想知道是否有类似的方法可以根据星云网格中的模型设置复选框状态?在视图中,我可以如下设置:
GridItem item = grid.getItem(3);
item.setChecked(2, true);
我使用
ITableLabelProvider
的getColumnImages(Object元素,int columnIndex)
方法添加复选框。我找到了一些选中和取消选中复选框的图片,并在此方法中设置了选择逻辑。这里有描述
然后,我实现了对列编辑的编辑支持,并在其方法getCellEditor(Object元素)
中将CheckboxCellEditor设置为checkboxColumn的返回值
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());
看看这个答案。有两种方法可以添加复选框。在vogella文章中,它们使用JFace Table,而JFace Table不提供复选框支持(CheckboxTableViewer除外,它只在每行前面放置复选框)。但星云网格确实提供了这样的支持。这就是为什么我不认为当在视图上调用
setChecked()
overGridItem
时,强制使用复选框图像应该是唯一的方法。