2

I use JFace DialogCellEditor to show a button in a cell of a row of my JFace TableViewer which triggers a dialog when activated. This behaviour works well with the following code but the button only appears when the cell of the table hosting the button is explicitly selected.

public class CompareDialogCellEditor extends DialogCellEditor {
    public CompareDialogCellEditor(Composite parent) {
           super(parent);
    }

    @Override
    protected Button createButton(Composite parent) {
           Button button = super.createButton(parent);
           button.setText("");
           button.setImage(AbstractUIPlugin.imageDescriptorFromPlugin(Application.PLUGIN_ID, IImageKeys.COMPARE_ICON).createImage());
           return button;
    }

    @Override
    protected Object openDialogBox(Control cellEditorWindow) {
           MessageDialog.openInformation(cellEditorWindow.getShell(), "Test", "It works");
           return null;
    }    
}

Is there a way to force the button to always appear in the table and not only when the cell is selected? (the same behaviour goes for a label set by the overridden method setContents(...) )

Thanks

4

1 に答える 1

3

一度に編集できるViewerセルは 1 つだけです。Viewerカスタマイズを行わない限り、一度に複数のセルを編集することはできません。

次の解決策を考えることができます。

  1. ウィジェット (ボタン、テキスト、コンボなど) をテーブル セルの画像のようにペイントし CellEditor、ユーザーがアクティブ化したときに呼び出します。Tableセル にペイントする方法については、ここでいくつかの例を見つけることができます。http://www.eclipse.org/articles/article.php?file=Article-CustomDrawingTableAndTreeItems/index.html

  2. ここにテーブルセルにボタンを表示する方法についての回答を投稿しました。SWTで同じ概念に従うことができますCellEditor - Tableviewer はテーブルの列に削除ボタンを追加します

于 2013-01-24T22:17:57.580 に答える