我正在使用以下
org.eclipse.jface.viewers.CheckboxCellEditor.CheckboxCellEditor(Composite parent)
我正在使用cellEditors创建一个表查看器并执行以下操作
CellEditor[] editors = new CellEditor[columnNames.length];
editors[7] = new CheckboxCellEditor(table);
我有一个具有以下
的CellModifierpublic 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。关于为什么我没有复选框的任何想法?
答案 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)
我决定要做的就是实施其他人一直在使用的肮脏黑客。
创建两个复选框图像,一个选中另一个未选中复选框。根据布尔值在两者之间切换状态。
这不完美,但现在它完成了工作