RCP中可勾选的tableview CheckboxTableViewer 博客分类: eclipse&RCP
在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[]