CheckboxCellEditor显示文本而不是复选框

时间:2009-09-08 19:39:38

标签: java eclipse swt rcp

我正在使用以下

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;

然而,在我的用户界面而不是复选框中,我有单词true或false&&单击它会导致将状态切换为false或true。关于为什么我没有复选框的任何想法?

3 个答案:

答案 0 :(得分:1)

我在CheckboxCellEditor类的源代码中搜索过,在构造函数中,在createControl(Composite parent)方法中创建了与CellEditor关联的控件。这个方法在CellEditor类中是抽象的,它在CheckboxCellEditor

中实现如下
protected Control createControl(Composite parent) {
    return null;
}

因此未创建控件,这就是您没有看到复选框的原因。在课程文档中,您可以阅读:

  

请注意,这个实现很简单   假装它并没有创造任何   新的控制。仅仅激活了   这个编辑器意味着价值   复选框正在被切换   终端用户;听众方法   立即调用applyEditorValue   发出变化的信号。

我使用带有是和否项目的ComboBoxCellEditor解决了这个问题。

问候。

答案 1 :(得分:0)

好吧,我不知道SWT是如何工作的,或者你甚至在谈论什么组件。

但我知道在使用Swing时,您可以为JTable中的列创建自定义编辑器。如果不告诉表该列的数据类,则调用数据的toString()方法。但是如果你告诉表格列中显示了布尔数据,那么表格将使用复选框编辑器。

听起来像一个类似的症状,但我不知道你的特定解决方案。

答案 2 :(得分:0)

我决定要做的就是实施其他人一直在使用的肮脏黑客。

创建两个复选框图像,一个选中另一个未选中复选框。根据布尔值在两者之间切换状态。

这不完美,但现在它完成了工作