java - 如何在 JFace 的 TableViewer 中创建复选框?

标签 java eclipse plugins swt jface

我创建了一个包含两列的 tableViewer,我想将其中一列设置为复选框。为此,我创建了一个 CheckBoxCellEditor,但我不知道它为什么不起作用。

名为 tableName 的列显示其值正常。

列规范如下。

    String[] COLUMN_HEADINGS = {"Select", "Table name"};

    TableColumnLayout tableLayout = new TableColumnLayout();
    parent.setLayout(tableLayout);

    //Set what would display each column
    TableViewerColumn selectCheckBox = createTableViewerColumn(COLUMN_HEADINGS[0], 0);
    selectCheckBox.getColumn().setResizable(false);
    selectCheckBox.setLabelProvider(new ColumnLabelProvider(){
         @Override
         public String getText(Object element) {
                 return null;
         }
    });

    //Set what would display each column
    TableViewerColumn tableName = createTableViewerColumn(COLUMN_HEADINGS[1], 1);
    tableName.getColumn().setResizable(false);
    tableName.setLabelProvider(new ColumnLabelProvider(){
        public String getText(Object element) {
            if(element instanceof TableMetaData && element != null)
                return ((TableMetaData)element).getName();
            return super.getText(element);
        }
    });

    //Set the dimensions of each column
    tableLayout.setColumnData(selectCheckBox.getColumn(), new ColumnWeightData(10));
    tableLayout.setColumnData(tableName.getColumn(), new ColumnWeightData(90));

    //Set column type (checkbox)
    selectCheckBox.setEditingSupport(new ResourcesConfigCheckEditingSupport(this));

EditingSupport 如下:

public class ResourcesConfigCheckEditingSupport extends EditingSupport{
    private CheckboxCellEditor cellEditor;


    public ResourcesConfigCheckEditingSupport(ColumnViewer viewer) {
        super(viewer);
        // TODO Auto-generated constructor stub
        cellEditor = new CheckboxCellEditor(null, SWT.CHECK | SWT.READ_ONLY);
    }

    @Override
    protected CellEditor getCellEditor(Object element) {
        // TODO Auto-generated method stub
        return cellEditor;
    }

    @Override
    protected boolean canEdit(Object element) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    protected Object getValue(Object element) {
        // TODO Auto-generated method stub
        return ((TableMetaData) element).getIsSelected();
    }

    @Override
    protected void setValue(Object element, Object value) {
        // TODO Auto-generated method stub
        ((TableMetaData) element).setIsSelected(Boolean.valueOf((boolean) value));
        getViewer().update(element, null);

    }
}

TableMetaData 对象决定复选框是否被选中。如何修复我的代码以使其正常工作?

谢谢。

最佳答案

Vogella 有一个完整的例子,你可以在这里找到:http://www.vogella.com/tutorials/EclipseJFaceTableAdvanced/article.html

在第 4 节中,使用了 CheckboxCellEditor。它可能对您有所帮助。

关于java - 如何在 JFace 的 TableViewer 中创建复选框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40605677/

相关文章:

java - 本地文件在更新后还能保存吗? (LibGDX)

java - Eclipse IDE - 悬停错误后信息气球不起作用

eclipse - 让groovy、maven 和eclipse 和谐共处?

java - eclipse插件编程"Workbench has not been created yet"错误

java - 在 Eclipse RCP 中使用 jfreechart 创建的条形图上不显示文本字段

java - 查找字符串中的整数个数(不是数字)

java - 如何使评分栏仅显示满星

java - 无法使用 Cloud Firestore 写入多个位置

java - 在 Eclipse 中可能发生在 IntelliJ 中不可能的事情?

ide - 有没有用于 jQuery 开发的 eclipse WTP 插件?