2009-09-08 81 views
1

我使用以下CheckboxCellEditor显示文本和

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而不是一个复选框,我有话真或假& &点击它会导致开关状态或真或假。任何想法,为什么我没有复选框?

回答

0

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

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

它并不完美,但现在干得不错

+0

他们在这里做同样的事情:http://www.eclipse.org/articles/Article-Table-viewer/table_viewer。html 当我第一次看到他们的源代码时,我也无法理解为什么他们为CheckboxCellEditor使用了两张图片。同时,他们使用了不使用任何图像的ComboBoxCellEditor。它显示一个组合框。那么为什么CheckboxCellEditor不返回复选框对我来说不是很清楚。 – ka3ak 2015-08-07 06:12:34

0

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

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

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

1

我搜索在CheckboxCellEditor类的源代码和相关的CellEditor的控制在createControl(Composite parent)方法创建的构造函数。这种方法是在CellEditor抽象类和它的实现像这样CheckboxCellEditor

protected Control createControl(Composite parent) { 
    return null; 
} 

所以不会创建一个控制,这就是为什么你没有看到的复选框。在类的文档,你可以阅读:

注意,此实现简单 假货,并确实不会产生任何 新控件。此编辑器仅仅是激活 意味着 复选框的值正由 最终用户切换;监听器方法 applyEditorValue立即被调用 来表示更改。

我解决了这个问题,使用ComboBoxCellEditor,是和没有项目。

问候。