2

我使用 JFaceDialogCellEditor在我的 JFace 的一行单元格中显示一个按钮,该按钮在TableViewer激活时会触发一个对话框。此行为适用于以下代码,但该按钮仅在显式选择承载按钮的表格单元格时出现。

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;
    }    
}

有没有办法强制按钮始终出现在表格中,而不仅仅是在选择单元格时?(同样的行为也适用于被覆盖方法设置的标签setContents(...)

谢谢

4

1 回答 1

3

您一次只能编辑一个Viewer单元格。Viewer除非您进行一些自定义,否则不支持一次编辑多个单元格。

我可以想到以下解决方案。

  1. 在表格单元格上绘制小部件(按钮、文本、组合..等),并 CellEditor在用户激活它时调用。你可以在这里找到一些关于如何在TableCell 上绘画的例子。 http://www.eclipse.org/articles/article.php?file=Article-CustomDrawingTableAndTreeItems/index.html

  2. 我在此处发布了有关如何在表格单元格中显示按钮的答案。您可以使用 SWT 遵循相同的概念CellEditor - Tableviewer 将删除按钮添加到表中的列

于 2013-01-24T22:17:57.580 回答