2009-09-08 48 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,是和沒有項目。

問候。