2016-03-30 4 views
0

私は、いくつかのテキスト、画像、およびチェックボックスを異なる列に含む星雲グリッドを使用しています。テキストと画像をモデルにマップしたい場合は、単にとgetColumnImages(Object e1, int c1)をjfaceのITableLabelProviderからそれぞれ使うことができます。星雲グリッドのチェックボックスに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と記載されています。

次に、私は列編集用の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つの方法が説明されています。

+0

vogellaの記事では、チェックボックスのサポートを提供しないJFaceテーブルを使用しています(CheckboxTableViewerは各行の前にチェックボックスを置くだけです)。しかし、星雲グリッドはそのようなサポートを提供します。これは、 'GridItem'を介して' setChecked() 'を呼び出すときに、チェックボックスの画像を強制的に使用することが唯一の方法であるべきだと私は考えていません。 – Shafi

関連する問題