1

私は以下を使用しています

org.eclipse.jface.viewers.CheckboxCellEditor.CheckboxCellEditor(Composite parent)

cellEditors を使用してテーブル ビューアーを作成し、次のことを行っています。

CellEditor[] editors = new CellEditor[columnNames.length];
editors[7] = new CheckboxCellEditor(table);

次のCellModifierがあります

public Object getValue(Object element, String property) {
        Object result = null;
        ...
        result = Boolean.valueOf(task.isDfRequested());
        return result;
}

 public void modify(Object element, String property, Object value) {
       item.isSelected(((Boolean)value).booleanValue());
}

最後に、次の LabelProvider があります

 public String getColumnText(Object element, int columnIndex) {
        String result = "";
        try { 
            result = Boolean.toString(item.isSelected());
        } catch (Exception ex) { } 

        break;

ただし、チェック ボックスの代わりに UI に true または false という単語があり、クリックすると状態が false または true に切り替わります。チェックボックスがない理由についてのアイデアはありますか??

4

3 に答える 3

2

クラスのソースコードとコンストラクターで検索しましたCheckboxCellEditorが、CellEditor に関連付けられたコントロールがcreateControl(Composite parent)メソッドで作成されます。このメソッドはCellEditorクラスで抽象的であり、次のように実装されていCheckboxCellEditorます。

protected Control createControl(Composite parent) {
    return null;
}

コントロールが作成されないため、チェックボックスが表示されません。クラスのドキュメントで読むことができます:

この実装は単にそれを偽造するだけで、新しいコントロールを作成しないことに注意してください。このエディターをアクティブにするだけで、チェック ボックスの値がエンド ユーザーによって切り替えられます。リスナー メソッド applyEditorValue がすぐに呼び出され、変更が通知されます。

yes と no のアイテムを含む ComboBoxCellEditor を使用してこれを解決しました。

よろしく。

于 2010-07-08T08:05:33.157 に答える
0

私がやろうと決めたのは、他の人が使っているダーティハックを実装することです。

チェックボックスの2つのイメージを作成します。一方はチェックされ、もう一方はチェックされていません。ブール値に基づいて、2つの状態を切り替えます。

それは完璧ではありませんが、今のところそれは仕事を成し遂げます

于 2009-09-14T21:55:03.343 に答える
0

SWT がどのように機能するのか、どのコンポーネントについて話しているのかさえわかりません。

しかし、Swing を使用すると、JTable の列にカスタム エディタを使用できることは知っています。列のデータのクラスをテーブルに伝えない場合、データの toString() メソッドが呼び出されます。ただし、ブール データが列に表示されることをテーブルに指示すると、テーブルはチェック ボックス エディターを使用します。

同様の症状のように聞こえますが、特定の解決策がわかりません。

于 2009-09-08T20:12:13.827 に答える