Eclipse3.3中提供了一个EditingSupport类,用于支持对TreeViewer或TableViewer等的编辑支持。
在之前,知道的人就会知道,要实现对树或表的编辑其实挺麻烦的,要设置好CellEditor,要定义好ColumnProperties,还要有一个CellModifier等等,而且几乎都是一列就只能有一个类型的CellEditor,而不能有异样。
3.3中提供这个EditingSupport使用起来更简单,而且编辑控件可以根据Cell的不同而有所不同。下面简单介绍一下使用方法。
创建一个TreeViewer或者是TableViewer的方式不变。不同的是创建Column方式现在要有所变化,例如:
private void createTreeColumn(TreeViewer tv) {
String[] titles = { "Name", "Parent", "Read_Only", "Hidden" };
for (int index = 0; index < 4; index++) {
TreeViewerColumn tvc = new TreeViewerColumn(tv, SWT.NONE, index);
tvc.getColumn().setWidth(100);
tvc.getColumn().setMoveable(true);
tvc.getColumn().setResizable(true);
tvc.getColumn().setText(titles[index]);
tvc.setLabelProvider(new FileCellLabelProvider(index));
tvc.setEditingSupport(new FileEditingSupport(tv, index));
}
}
要使用EditingSupport,我们需要使用ViewerColumn对象来创建Column,然后给这个ViewerColumn设置EditingSupport对象。
每个VieweColumn可以设置自己的、与众不同的CellLabelProvider,所以此时整个树或表的LabelProvider可以不设置。
最后就是实现自定义的EditingSupport。这里我给这个EditingSupport传入了column的index,这样到时可以知道具体是哪一列正在编辑。FileEditingSupport实现如下:
class FileEditingSupport extends EditingSupport {
private int index;
public FileEditingSupport(ColumnViewer viewer, int index) {
super(viewer);
this.index = index;
}
@Override
protected boolean canEdit(Object element) {
switch (index) {
case 1:
return false;
default:
break;
}
return true;
}
@Override
protected CellEditor getCellEditor(Object element) {
switch (index) {
case 0:
return new TextCellEditor((Composite) getViewer().getControl(),
SWT.NONE);
case 2:
case 3:
return new ComboBoxCellEditor((Composite) getViewer().getControl(),
new String[] { "true", "false" }, SWT.NONE);
default:
break;
}
return null;
}
@Override
protected Object getValue(Object element) {
switch (index) {
case 0:
return ((File) element).getName();
case 1:
return ((File) element).getParent();
case 2:
return ((File) element).canWrite()?new Integer(0):new Integer(1);
case 3:
return ((File) element).isHidden()?new Integer(0):new Integer(1);
default:
break;
}
return null;
}
@Override
protected void setValue(Object element, Object value) {
}
}
这些方法理解起来不难,实现当然也很简单。这里看起来还是一整列只有一种编辑方式,不过可以很容易的改成根据不同对象的不同列实现不同的编辑方式,例如如果对象是一个File,实现可以选择父对象,如果是一个Folder,可以改名等等!
分享到:
相关推荐
这个教程对于理解Swt/Jface的`TableViewer`及其高级功能非常有帮助,同时也能提高用户与应用程序的交互性。在实际项目中,还可以结合`Filter`和`Sorter`类实现更复杂的功能,如数据过滤和排序,进一步增强表格的功能...
Since 3.3, an alternative API is available, see ViewerColumn.setEditingSupport(EditingSupport) for a more flexible way of editing values in a column viewer. 从3.3开始,tableViewer.setCellEditors...
在Java编程环境中,特别是涉及到图形用户界面(GUI)开发时,SWT(Standard Widget Toolkit)是一个重要的库,它提供了丰富的控件和API用于构建桌面应用程序。`CheckBoxCellEditor`是SWT中的一个特殊组件,主要用于...
通信工程应届生求职简历.docx
c++课程设计-产品入库管理操作系统 此 C++ 课程设计的产品入库管理操作系统,可实现产品信息录入、修改、查询与统计等功能,助力高效精准管理产品入库。
IMG_20250416_154837.jpg
处理器知识_RISC-V_简单启动流程_教学演示用途_1744731373.zip
文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 你是否渴望高效解决复杂的数学计算、数据分析难题?MATLAB 就是你的得力助手!作为一款强大的技术计算软件,MATLAB 集数值分析、矩阵运算、信号处理等多功能于一身,广泛应用于工程、科学研究等众多领域。 其简洁直观的编程环境,让代码编写如同行云流水。丰富的函数库和工具箱,为你节省大量时间和精力。无论是新手入门,还是资深专家,都能借助 MATLAB 挖掘数据背后的价值,创新科技成果。别再犹豫,拥抱 MATLAB,开启你的科技探索之旅!
CNC_嵌入式_高性能_低成本控制器_GRBL
智能婴儿床系统是基于STM32微控制器设计的一款全方位监测和互动系统,旨在提供全面的婴儿关怀解决方案。系统涵盖了体温、环境温度、湿度、光照、哭闹检测、音乐播放、烟雾浓度检测、自动摇篮模拟、WiFi通信以及云服务器连接等功能。
内容概要:本文详细介绍了机器视觉通用软件的工作原理、功能特点及其广泛应用。机器视觉通用软件通过图像采集、预处理、特征提取与分析、决策与输出四个核心步骤,模拟人类视觉系统,使机器具备“看懂”图像并作出决策的能力。其功能涵盖图像识别、测量、检测、定位和分类等多个方面,能够满足不同行业的需求。文章还回顾了机器视觉技术从20世纪50年代至今的发展历程,展望了未来在技术突破、应用拓展以及与其他技术融合方面的潜力。; 适合人群:对机器视觉技术感兴趣的工程师、
22020-9KZB_改封装-.pdf
全球6G技术大会2024年5G6G天地一体化技术探索与实践白皮书87页.pdf
内容概要:本文围绕计算机二级考试的复习与做题心得展开,首先介绍了计算机二级考试的性质及其对不同人群的价值,接着详细对比了各科目的内容、适用人群和难度,推荐了适合不同基础考生的选择。文章还给出了以Python为例的复习计划,分为基础学习、真题练习和模拟练习三个阶段,并针对选择题、填空题、改错题和编程题提供了具体的做题技巧。最后,指出了备考中的常见误区,强调了实际操作的重要性,并鼓励考生不要因背景限制而畏惧考试,指出通过考试不仅能在简历上加分,还能提升个人能力。 适合人群:正在准备或考虑参加计算机二级考试的学生,特别是应届毕业生、希望获得学分或奖学金的同学,以及想进入国企、事业单位或公务员系统的求职者。 使用场景及目标:①帮助考生了解计算机二级考试的内容和价值;②为考生提供科目选择的指导;③制定合理的复习计划并掌握有效的做题技巧;④避免备考中的常见错误,提高通过率。 阅读建议:本文内容详实,语言轻松易懂,适合在备考初期阅读,以制定整体复习规划。考生可以根据自身情况,重点参考科目选择和复习计划部分,并结合做题技巧进行针对性练习。
全球6G技术大会2024年6G未来电视视频应用场景需求与技术解析白皮书33页.pdf
文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 你是否渴望高效解决复杂的数学计算、数据分析难题?MATLAB 就是你的得力助手!作为一款强大的技术计算软件,MATLAB 集数值分析、矩阵运算、信号处理等多功能于一身,广泛应用于工程、科学研究等众多领域。 其简洁直观的编程环境,让代码编写如同行云流水。丰富的函数库和工具箱,为你节省大量时间和精力。无论是新手入门,还是资深专家,都能借助 MATLAB 挖掘数据背后的价值,创新科技成果。别再犹豫,拥抱 MATLAB,开启你的科技探索之旅!
内容概要:本文介绍了通过C语言实现反转加法构造回文数的方法,能够处理1000位的大整数。文中详细展示了如何定义字符数组存储大整数,通过自定义函数而非调用现成函数来提高效率,实现对输入数字的反转、判别是否为回文以及最优字符大整数加法等操作。核心代码包括字符串指针反序判回文、字符串指针反转赋值、高效字符串指针反转赋值判回文等函数,利用goto语句实现循环,确保当数字不是回文时,将原数与其反转后的数相加,得到的新数继续判断,直到构造出回文数或达到设定的最大迭代次数(如10次)。 适合人群:有一定C语言编程基础的学习者,尤其是对大整数运算、字符串操作感兴趣的读者。 使用场景及目标:①理解C语言中字符数组表示大整数、字符串指针操作等底层机制;②掌握通过反转加法构造回文数的算法思想,熟悉goto语句控制流程的应用。 其他说明:此代码示例强调了自定义函数在处理特定任务时的高效性,读者可以在此基础上进一步优化算法,探索更多关于大整数运算的知识。
文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 你是否渴望高效解决复杂的数学计算、数据分析难题?MATLAB 就是你的得力助手!作为一款强大的技术计算软件,MATLAB 集数值分析、矩阵运算、信号处理等多功能于一身,广泛应用于工程、科学研究等众多领域。 其简洁直观的编程环境,让代码编写如同行云流水。丰富的函数库和工具箱,为你节省大量时间和精力。无论是新手入门,还是资深专家,都能借助 MATLAB 挖掘数据背后的价值,创新科技成果。别再犹豫,拥抱 MATLAB,开启你的科技探索之旅!
文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 你是否渴望高效解决复杂的数学计算、数据分析难题?MATLAB 就是你的得力助手!作为一款强大的技术计算软件,MATLAB 集数值分析、矩阵运算、信号处理等多功能于一身,广泛应用于工程、科学研究等众多领域。 其简洁直观的编程环境,让代码编写如同行云流水。丰富的函数库和工具箱,为你节省大量时间和精力。无论是新手入门,还是资深专家,都能借助 MATLAB 挖掘数据背后的价值,创新科技成果。别再犹豫,拥抱 MATLAB,开启你的科技探索之旅!
STM32F103C8T6-基于FreeRTOS系统实现步进电机控制