定义自己的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大体就是这样。
分享到:
相关推荐
4. **定义CellEditor**:根据需要,创建并设置特定类型的`CellEditor`。 ```java viewer.setCellEditors(new CellEditor[] {new TextCellEditor(table)}); ``` 5. **激活编辑**:当用户点击单元格时,`TableViewer`...
在Swing的JTable组件中,单元格编辑通常通过实现`javax.swing.CellEditor`接口来定制。`CellEditor`负责启动和停止编辑过程,以及获取和设置单元格的值。`focusLost`事件可能是由`CellEditor`的`stopCellEditing()`...
开发者可以通过设置DataGrid的columns属性来定义列的显示样式和行为。 AutoCompleteDataGrid则是在DataGrid的基础上增加了一个自动补全功能。当用户在输入框中输入文本时,组件会根据已有的数据源自动列出匹配的...
- 开发者可能会扩展SWT.Table类,添加自定义的功能,如自定义的渲染器(CellRenderer)、编辑器(CellEditor)等。 - 可能会实现监听器,如SelectionListener、ModifyListener等,来处理用户交互事件。 - 数据...
在提供的代码片段中,可以看到一个`GridControl`的定义以及其中包含的多个`GridColumn`元素。每个`GridColumn`定义了一个列,并且可以通过`FieldName`属性来指定所绑定的数据源字段。此外,还可以通过设置`...
首先,`CellEditor`是SWT中用于表格编辑的基础类,它定义了编辑器的基本行为,如开始编辑、结束编辑、获取和设置值等。`CheckBoxCellEditor`是`CellEditor`的一个子类,它专门用于显示和编辑复选框。创建`...
你可以实现自己的`TableModel`类,或者使用预定义的实现,如`DefaultTableModel`,它提供了一个简单的基础来存储和管理数据。 在`JTableDemo`中,首先需要创建一个`TableModel`实例,然后用它来初始化`JTable`对象...
`MyEditingSupport`类会覆盖`createCellEditor()`方法来创建合适的`CellEditor`,并实现`canEdit()`和`getValue()`方法来控制编辑行为和获取编辑后的值。 6. **处理编辑事件** 当用户完成编辑后,我们需要监听`...
2. 为每个需要编辑的列定义一个CellEditor,例如使用ComboBoxCellEditor。 3. 当用户点击行时,启动编辑模式。这可以通过监听DataGrid的click事件并在事件处理函数中调用beginEdit()方法来完成。 4. 编辑完成后,...
开发者可以使用预定义的DefaultTableModel,也可以自定义自己的TableModel以适应特定的需求。 其次,JTable的列可以有不同的数据类型,例如字符串、数字、日期等,每列都有对应的CellRenderer和CellEditor来决定...
3. **修改(Edit)**: PrimeFaces的`<p:cellEditor>`或`<p:rowEditor>`组件允许在表格行内直接编辑数据。当用户激活编辑模式时,单元格变为可编辑,用户可以更新字段值。编辑完成后,提交更改至后台进行处理。 4. *...
5. `JTableTest.fxml`/`JTableTest.ui`:如果是使用FXML或GUI设计器创建的界面,这里会包含界面布局的定义。 6. `JTableTest.css`/`style.css`:样式表文件,用于美化`JTable`及整个应用的外观。 总结来说,`...
Button、Calendar、Captcha、Carousel、CellEditor、Chart(及其各种图表类型)、Checkbox、Clock、Collector、ColorPicker、Column、CommandButton、CommandLink、Confirm、ConfirmDialog、ContentFlow、...
`AbstractCellEditor`是`CellEditor`接口的抽象实现,用于表格和树组件的单元格编辑。`AbstractCollection`是所有集合类的基础,它定义了基本的集合操作。`AbstractColorChooserPanel`是颜色选择器面板的抽象类,...
`AbstractCellEditor` 是 `CellEditor` 的抽象实现,常用于表格和树组件的单元格编辑。`DefaultCellEditor` 是 `AbstractCellEditor` 的具体实现,同时实现了 `TableCellEditor` 和 `TreeCellEditor` 接口,可以用于...
你还可以自定义`CellRenderer`和`CellEditor`来改变节点的外观和行为,或者通过`TreeModelListener`监听树结构的变化。 总结来说,`JTree_Example`是一个演示如何在Java Swing应用中使用`JTree`组件的实例,涵盖了...
2. 命令“CellEditor”表明用户可以通过快捷键进入或退出单元编辑器模式,这是一种特殊的编辑模式,允许用户编辑元器件封装等单元对象。 3. 某些快捷键可能与特定的命令或操作相关,如“Zoomall”和“Zoomboard”...
7. **AbstractCellEditor**: 这是JTable中单元格编辑器的一个抽象基类,用于定义单元格的编辑行为。在TreeTable中,某些单元格可能需要编辑,因此可能需要自定义CellEditor来处理这些情况。 8. **...
13. **CellEditor**: 单元格编辑器,允许用户在表格的单元格内直接编辑数据。 14. **Chart**: 图表组件,提供不同类型的图表,包括饼图、折线图、柱状图、环形图、气泡图等,以及它们的变体。 15. **Checkbox**: ...
TableEditor通常是一个实现了CellEditor接口的类,它定义了如何启动和停止编辑,以及如何获取和设置单元格的值。这样的组件可以使用户在表格中直接编辑数据,而无需打开新的窗口或对话框,极大地提高了交互性和用户...