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

所以没有创建控件,这就是你看不到复选框的原因。在 Class 的文档中,您可以阅读:

请注意,此实现只是伪造它并且不会创建任何新控件。仅激活此编辑器就意味着最终用户正在切换复选框的值;立即调用侦听器方法 applyEditorValue 以发出更改信号。

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

问候。

于 2010-07-08T08:05:33.157 回答
0

好吧,我不知道 SWT 是如何工作的,也不知道你在说什么组件。

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

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

于 2009-09-08T20:12:13.827 回答
0

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

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

它并不完美,但现在它可以完成工作

于 2009-09-14T21:55:03.343 回答