一. 创建表格
1. setContentProvider 主要功能:把数据转换为表格需要的数据模型,这里转换为数组。
2. setLabelProvider 主要功能:设置每个单元格显示的文本和图片。
3. setInput 主要功能:提供数据
整体上的工作过程是:setInput()提供数据,setContentProvider()把setInput()提供的数据转换为表格能用的数据类型:数组,setLabelProvider()把这些数据按照我们想要的形式显示出来。他们三者遵照MVC思想。
二. 为表格增加功能
1. 右键菜单
1.1 创建MenuManager()
1.2 设置为表格的contextMenu
2. 排序
2.1 调用TableViewer方法setSorter(Sorter sorter)为表格设置排序。
2.2 调用sorter.doSort(int column);触发排序。
3. 编辑单元格内容
3.1 setColumnProperties 主要功能:给每个列设置一个属性,相当于设置了一个名字
3.2 setCellEditors 主要功能:设置每列的单元格是什么类型的编辑框,比如文本框,组合框,下拉框。
3.3 setCellModifier 主要功能:设置当前单元格是否可编辑,改变后的值怎么处理等等。
4. 增加表格过滤
4.1 addFilter(ViewerFilter filter);
三. 其他
1. 表格中增加一行记录的方法:
TableViewer和数据模型(本例中的是List对象)中都能够增加删除一条记录,区别在于TableViewer中的方法只是在对显示界面的数据进行操作,并为改变数据模型中的数据;而直接在数据模型中增删数据需要调用TableViewer的refresh()方法才能显示出增删的数据。
2.TableViewer的update()方法与refresh()方法的区别:
前者假定输入模型结构不变,后者认为输入模型结构发生变化;所以优先调用前者,减少系统开销。
3. TableColumn类:
它用来设置表格的title,它和表格的body是分开创建的,而且树也可以创建树的title,使用TreeColumn类,这时的树就是 表格树。
4. 如何改变表格的行高:
可以通过设置单元格图片的方式,间接的使单元格变高。
四.主要代码示例
1. 主类
/**
* @description:
* @author Administrator
* @version 1.0, 2010-2-19
* @Copyright 2010-2020
*/
public class MyEditor extends EditorPart {
public static final String ID = "rcptest.editors.MyEditor";
public static final String[] COLUMN_NAME = { "ID", "NAME", "SEX", "COLOR" };
private TableViewer table;
private List persons;
public MyEditor() {
super();
}
@Override
public void doSave(IProgressMonitor monitor) {
// TODO Auto-generated method stub
}
@Override
public void doSaveAs() {
// TODO Auto-generated method stub
}
@Override
public void init(IEditorSite site, IEdi