`
bencode
  • 浏览: 109742 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

TableViewer, TreeViewer双击编辑

阅读更多
在TreeViewer或TableViewer中,可用CellEditor结合CellModifier可以很实现表格的编辑功能
但是默认的是单击,就会打开编辑区域。有时候我们会需要双击进行(或者其他),于是我写了一个
DoubleCellModifier,只要让你的CellModifier继承它,就可以很方便实现双击编辑。

具体代码如下:
java 代码
 
  1. package com.longthsoft.rcppart.ui;  
  2.   
  3. import org.eclipse.jface.viewers.ICellModifier;  
  4. import org.eclipse.jface.viewers.TableViewer;  
  5. import org.eclipse.jface.viewers.TreeViewer;  
  6. import org.eclipse.swt.events.MouseAdapter;  
  7. import org.eclipse.swt.events.MouseEvent;  
  8. import org.eclipse.swt.widgets.Item;  
  9.   
  10. public abstract class DoubleClickCellModifier implements ICellModifier {  
  11.      
  12.     private boolean doubleClick;  
  13.     private Object element;  
  14.     private String property;  
  15.      
  16.     public DoubleClickCellModifier(final TableViewer tableViewer) {  
  17.         tableViewer.getTable().addMouseListener(new MouseAdapter() {  
  18.             @Override  
  19.             public void mouseDoubleClick(MouseEvent e) {  
  20.                 if (allowModify(element, property)) {  
  21.                     int column = UIUtil.getPropertyColumnIndex(tableViewer, property);  
  22.                     doubleClick = true;  
  23.                     tableViewer.editElement(element, column);  
  24.                     doubleClick = false;  
  25.                 }  
  26.             }  
  27.         });  
  28.     }  
  29.      
  30.     public DoubleClickCellModifier(final TreeViewer treeViewer) {  
  31.         treeViewer.getTree().addMouseListener(new MouseAdapter() {  
  32.             public void mouseDoubleClick(MouseEvent e) {  
  33.                 if (allowModify(element, property)) {  
  34.                     int column =UIUtil.getPropertyColumnIndex(treeViewer, property);  
  35.                     doubleClick = true;  
  36.                     treeViewer.editElement(element, column);  
  37.                     doubleClick = false;  
  38.                 }  
  39.             }  
  40.         });  
  41.     }  
  42.      
  43.     public boolean canModify(Object element, String property) {  
  44.         this.element = element;  
  45.         this.property = property;  
  46.         if (doubleClick) {  
  47.             return true;  
  48.         } else {  
  49.             return false;  
  50.         }  
  51.     }  
  52.      
  53.     public void modify(Object element, String property, Object value) {  
  54.         if (element instanceof Item) {  
  55.             element = ((Item) element).getData();  
  56.         }  
  57.         doModify(element, property, value);  
  58.     }  
  59.      
  60.     public boolean allowModify(Object element, String property) {  
  61.         return true;  
  62.     }  
  63.      
  64.     public abstract void doModify(Object element, String property, Object value);  
  65. }  
分享到:
评论
3 楼 331008019 2008-12-14  
我和一楼有着同样的问题:一开始就直接以编辑模式展现所有CELL如何实现?
2 楼 tanchang18 2008-07-01  
不用点击,直接以编辑模式展现所有CELL如何实现?
1 楼 379548695 2008-05-20  
想问下楼主,treeviewer能支持多级树不能?

相关推荐

    TableViewer单元格编辑功能

    Jface TableViewer控件实现的对标签文件的标签属性的修改功能。 用TextCellEditor和ComboBoxCellEditor给表格添加编辑功能。 通过表格的addListener事件为表格的单元格添加编辑功能,事例根据鼠标点击时鼠标的X和Y...

    tableviewer edit

    在标题“tableviewer edit”中提到的编辑功能,是指`TableViewer`支持对表格中的单元格进行编辑。 `CellEditor` 是`TableViewer`编辑功能的核心,允许用户在表格的特定单元格内输入或修改数据。`CellEditor` 提供了...

    Swt/Jface tableViewer入门教程三(加入在表格上直接编辑数据)

    在本文中,我们将深入探讨如何使用Swt/Jface库中的`TableViewer`组件来创建一个功能丰富的表格,并实现用户可以直接在表格上编辑数据的功能。Swt/Jface是Eclipse平台的一部分,提供了一套用于构建图形用户界面(GUI...

    Swt/Jface tableViewer入门教程一(显示tableViewer)

    5. **事件监听**:`tableViewer`提供了丰富的事件监听机制,如`SelectionChangedListener`用于监听选中项变化,`DoubleClickListener`用于处理双击事件。你可以根据需求添加相应的监听器来响应用户操作。 6. **刷新...

    TableViewer示例

    TableViewer支持单元格编辑,通过`setCellModifier`设置单元格修改器。此外,还需实现`IStructuredContentProvider`接口的`getElements`方法,以便在编辑后更新数据。 7. 排序与过滤 TableViewer提供`setSortColumn...

    swt/jface tableViewer开发简化

    6. **定制化功能**: `tableViewer`支持自定义列宽、单元格样式,甚至自定义单元格编辑器,提供高度可定制化的用户体验。 关于压缩包文件`tableReflectPro`,名字暗示可能是一个关于反射(Reflection)的工具或示例...

    Tableviewer实现

    `TableViewer`不仅能够显示数据,还可以对数据进行排序、过滤、编辑等操作,是Eclipse插件开发中的重要工具。 1. **创建TableViewer** 创建`TableViewer`的基本步骤包括:首先,你需要一个`Table`控件,然后通过`...

    Set TableViewer Cell Focus

    "Set TableViewer Cell Focus"这个话题是关于如何在TableViewer中设置焦点到特定单元格上,这对于实现用户交互和数据编辑功能至关重要。在Eclipse插件开发或者基于SWT(Standard Widget Toolkit)的应用程序中,...

    JFace TableViewer的单元格逐个遍历的辅助类

    点击Enter键,对TableViewer的单元格进行逐个遍历的辅助类,推荐用于使用ViewerColumn.setEditingSupport的可编辑TableViewer。 Since 3.3, an alternative API is available, see ViewerColumn.setEditingSupport...

    SWT中自己订制了一个TableViewer(用于我的列出项目中的所有错误信息),作为测试用的。与大家分享

    此外,TableViewer还支持排序、选择事件监听、编辑功能等。你可以根据需求进一步定制这些功能。 最后,关于文件"tableViewer",可能是该示例项目的源代码文件。通过查看这个文件,我们可以更深入地理解自定义...

    SWT Table单元格编辑功能

    ### SWT Table单元格编辑功能详解 在Java图形用户界面(GUI)开发中,SWT(Standard Widget Toolkit)是一个广泛使用的工具包,它提供了丰富的控件集合,用于构建高性能的桌面应用程序。其中,`Table`控件是SWT中最...

    Setting focus cell in TableViewer

    3. "jface TableViewer ViewerCell editElement based on Column - Stack Overflow.mht" 可能涉及根据列条件触发单元格编辑的实现。 4. "Eclipse JFace TableViewer - Tutorial.mht" 是一个JFace TableViewer的教程...

    RCP开发之TableViewer 列的显示与隐藏

    RCP开发比Table更高级的TableViewer的使用。实现列的隐藏与显示

    带有翻页功能的TableViewer.rar

    6. **事件处理**:确保TableViewer中的事件处理正确,例如,当用户选择某一行时,可以触发相应的事件,进行数据的详细查看或编辑。 在“带有翻页功能的TableViewer.rar”压缩包中,很可能包含了实现这些功能的Java...

    Plugins-JFace-TableViewer.rar

    Plugins-JFace-TableViewer.rar Plugins-JFace-TableViewer.rar Plugins-JFace-TableViewer.rar Plugins-JFace-TableViewer.rar Plugins-JFace-TableViewer.rar

    JFace-viewer

    Viewer提供了多种类型的视图实现,如TableViewer、TreeViewer等,它们可以方便地展示数据,并支持排序、过滤、编辑等功能。 **2. 数据模型** 在JFace Viewer中,数据模型是通过ContentProvider和LabelProvider来...

    CheckBoxCellEditor.zip_CheckboxCellEditor_SWT_cell

    `CheckBoxCellEditor`是SWT中的一个特殊组件,主要用于表格(TableViewer或TreeViewer)中实现单元格的复选框编辑功能。这个组件使得用户可以直接在表格中勾选或取消勾选某个条目,而无需打开单独的对话框进行编辑。...

    TableViewer学习源码

    虽然文件名字起得很笼统 里面只有一个关于TableViewer的项目源码 源码的依据是我转载的一篇学习TableViewer的博客源码 http://blog.csdn.net/weiweiwei256/article/details/49514699

    SWT和JFace开发实例

    - 使用TableViewer和TreeViewer实现数据展示和编辑。 - 创建自定义对话框,如使用Dialog和Shell类。 - 事件驱动编程,实现用户交互响应。 - 使用Action和Command模式进行命令管理,提高代码复用性。 - 实现文件...

    Eclipse下SWT图形界面开发指南(1)

    1. **创建 TableViewer**:与 `TreeViewer` 类似,创建一个 `TableViewer` 实例,并将其添加到窗口中。 ```java TableViewer tableViewer = new TableViewer(parent, SWT.BORDER | SWT.MULTI); ``` 2. **实现 ...

Global site tag (gtag.js) - Google Analytics