欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

RCP中可勾选的tableview CheckboxTableViewer 博客分类: eclipse&RCP  

程序员文章站 2024-02-25 08:37:58
...

在RCP的开发中,我们经常需要在table中让用户去选则某些行来进行某些操作,在tableview中我们可以在style中设置SWT.CHECK,但在管理上往往不是很方便,这里对CheckboxTableViewer来进行简单介绍和使用说明:

 

首先我们先创建table:

//先创建表 注意style中要包含 SWT.CHECK
  Table table = new Table(parent, SWT.CHECK|SWT.MULTI | SWT.FULL_SELECTION | SWT.BORDER|SWT.V_SCROLL|SWT.H_SCROLL);
  table.setLayoutData(new GridData(GridData.FILL_BOTH));
  //设置表头
  String[] tableCols = {"ID" , "姓名" , "性别" , "电话"};
  
  for(String colStr : tableCols) {
   TableColumn tc = new TableColumn(table, SWT.LEFT); //靠左
   tc.setText(colStr);
   tc.setWidth(70);
  }
  //设置line 和header显示
  table.setLinesVisible(true);
  table.setHeaderVisible(true);

 

然后在table上我们初始化 CheckboxTableViewer:

 

checkTableView = new CheckboxTableViewer(table);

 

设置标签管理器和内容管理器

 

/**
  * 标签管理
  * @author lyf
  *
  */
 private class PersonLabelProvider extends LabelProvider implements
   ITableLabelProvider {

  @Override
  public Image getColumnImage(Object element, int columnIndex) {
   // TODO Auto-generated method stub
   return null;
  }

  @Override
  public String getColumnText(Object element, int columnIndex) {
   switch (columnIndex) {
   case 0:
    return ((Person)element).getId();
   case 1:
    return ((Person)element).getName();
   case 2:
    return ((Person)element).getSex();
   case 3:
    return ((Person)element).getTel();
    

   default:
    return "";
   }
   
  }

 }
 
 /**
  * 内容管理
  *
  * @author lyf
  *
  */
 private class PersonContentProvider implements
   IStructuredContentProvider {

  @Override
  public void dispose() {
   // TODO Auto-generated method stub
   
  }

  @Override
  public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
   // TODO Auto-generated method stub
   
  }

  @SuppressWarnings("rawtypes")
  @Override
  public Object[] getElements(Object inputElement) {
   if(inputElement instanceof List) {
    return ((List)inputElement).toArray();
   }
   return new Object[0];
  }
  
 }

 

OK!差不多了 我们给tableview setinput参数就可以了 在这里我自己创建了实体类 Person来进行显示,具体可以见附件中完整的代码!

 

 

注:

在CheckboxTableViewer中 常用的几个方法有:

 

     checkTableView.setAllChecked(true); 将tableview中所有的元素选中

    checkTableView.setChecked(Object element,boolean state);设置tableview中某一个元素是否被勾选的状态

     checkTableView.getChecked(Object element);查看某个元素是否被选中

    checkTableView.getCheckedElements(); 返回所有被选中的元素集合,返回类型为Object[]