Posted on 2006-09-18 15:08
小小涼粉 閱讀(1367)
評論(0) 編輯 收藏
為了批量發布設備,需要在一個窗口中為設備命名,設定其類型等,要用到Combo,所以就用了CellEditor
用CellEditor還是很方便的,有CheckboxCellEditor,ComboBoxCellEditor,LabelCellEditor,TextCellEditor等等。
首先把TableColumn的名稱做成String數組,調用viewer.setColumnProperties()方法
然后做一個CellEditor數組,數組中的每一個CellEditor都對應著每一個Column
然后實現ICellModifier接口,做一個自己的CellModifier,并調用viewer.setCellModifier()方法
接口中有三個方法:
1.public boolean canModify(Object element, String property)
用來判斷哪一個屬性可寫
2.public Object getValue(Object element, String property)
返回某個屬性的值
3.public void modify(Object element, String property, Object value)
為某個屬性賦值
昨天碰到了很多異常,情況如下:
1.ComboCellEditor 中對應的是Integer類型的值,如果用了String的話,就會有異常拋出。
2.tableviewer的input中,對象的很多屬性沒有賦初始值,由此而導致了在CellModifier里面調用get或者set方法時,出現了空指針異常。
3.update tableviewer。今天上午才找到table.addFocusListener方法,而且要在focusGained方法中進行更新。應該是由于編輯Cell的時候,focus從Table轉移到了Cell上,所以要用focusGained方法吧。