Posted on 2006-09-18 15:08
小小凉粉 阅读(1365)
评论(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方法吧。