RCP中可勾选的tableview CheckboxTableViewer

在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[]

猜你喜欢

转载自jjxliu306.iteye.com/blog/1189559