花开有时

花开有时,花落有时,来有时,去有时。不撕扯,只关切;不纪念,只牵挂;不感动,只明白;不寻找,只记得。
随笔 - 24, 文章 - 0, 评论 - 54, 引用 - 0
数据加载中……

定义自己的CellEditor

    定义自己的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大体就是这样。

posted on 2008-02-03 14:51 花开有时 阅读(3722) 评论(1)  编辑  收藏 所属分类: Eclipse

评论

# re: 定义自己的CellEditor  回复  更多评论   

非常 不错呀,收藏……
2008-02-17 12:35 | 83eee

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问