私は、チェックボックスを追加するITableLabelProvider
のgetColumnImages(Object element, int columnIndex)
方法を使用していました。チェックされたチェックボックスとチェックされていないチェックボックスの写真をいくつか見つけ、この方法で選択ロジックを設定しました。そこにはhttp://www.vogella.com/tutorials/EclipseJFaceTable/article.html#jfaceeditorと記載されています。
次に、私は列編集用のEditingSupportを実装しました。その方法は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に見てください。チェックボックスを追加する2つの方法が説明されています。
vogellaの記事では、チェックボックスのサポートを提供しないJFaceテーブルを使用しています(CheckboxTableViewerは各行の前にチェックボックスを置くだけです)。しかし、星雲グリッドはそのようなサポートを提供します。これは、 'GridItem'を介して' setChecked() 'を呼び出すときに、チェックボックスの画像を強制的に使用することが唯一の方法であるべきだと私は考えていません。 – Shafi