定义自己的CellEditor其实不难,完整的实例可以看Eclipse的TextCellEditor与ComboBoxCellEditor(原理都差不多,但推荐看CmboboxCellEditor,它的实现简单些)
在具体实现前先说说CellEditor的原理:
在点击Table或Tree的一个Cell(单元格)或Item(节点)时激发CellEditor,如果这个CellEditor是TextCellEditor这返回一个Text供User编辑,如果
是ComboBoxCellEditor则返回一个Combo供User选择,如果是自定义的CellEditor则需要在CellEditor里返回一个Control
(实现父类的createControl(Composite parent)方法。
下面说说一个CellEditor具体的实现:
1.首先,需要继承CellEditor类,从而实现它的几个方法。
1)实现一个参数为org.eclipse.swt.widgets.Composite的构造方法,并在构造方法中调用参数为org.eclipse.swt.widgets.Composite的父类的构造方法。
2)重写父类的createControl(Composite parent),需要返回我们自定义的一个Contrl,比如说Button,Text,Combo,DateTime,List,Table(当然你的Cell要够大才显美观)。
3)重写父类的doSetValue(Object value),其中的value是从Table(Tree)中一个Cell(Item)上获得的值,可以用这个值为我们自定义的Control赋初值(就是当CellEditor被激活时出现的Control上显示的值)。
4)重写父类的doGetValue()方法,return一个Object,这个Object是返回一个值给Table(Tree),然后Table(Tree)对这个值进行解析,再反映到对应的Cell(Item)上。
5)重写父类的doSetFocus()方法,当CellEditor被激活时,把foucus显示的Control,一般用control的setFocus方法即可。
ok,实现自定义的CellEditor大体就是这样。