RCP TableViewer编程详细

 

一.        创建表格

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值