CheckboxtableView使用
//建立CheckboxTableViewer
CheckboxTableViewer checkboxTableViewer = CheckboxTableViewer.newCheckList(shell, SWT.BORDER | SWT.FULL_SELECTION);
table = checkboxTableViewer.getTable();//擷取表格
table.setLinesVisible(true);//表行
table.setHeaderVisible(true);//表格頭部顯示
table.setBounds(10, 150, 853, 320);
table.addListener(SWT.MeasureItem, new Listener() {//監聽如果表格中有資料時 表格高度設定為23
public void handleEvent(Event event) {
event.height = 23;
}
});
checkboxTableViewer.setContentProvider(new TableViewContentProvider()); // 内容器
checkboxTableViewer.setLabelProvider(new BeiTaiTableViewLabelProvider());// 标簽器
checkboxTableViewer.setInput(list);//設定表格中的資料
//動态切換表格列的時候可以使用(在使用動态切換表格中的頭部或資訊時)
while(table.getColumnCount()>0)table.getColumns()[0].dispose(); //dispose摧毀表格頭部重新建立
//将列封裝在一個方法裡面 例如:
public void xuetangColumn(){
while(table.getColumnCount()>0)table.getColumns()[0].dispose(); //在改變列之前摧毀
tableViewerColumn = new TableViewerColumn(
checkboxTableViewer, SWT.NONE);
TableColumn tableColumn = tableViewerColumn.getColumn();
tableColumn.setText("血糖值");
tableColumn.setWidth(428);
tableViewerColumn_1 = new TableViewerColumn(checkboxTableViewer, SWT.NONE);
TableColumn tableColumn_1 = tableViewerColumn_1.getColumn();
tableColumn_1.setWidth(400);
tableColumn_1.setText("測量日期");
}
//删除表格中的所有資料
checkboxTableViewer.getTable().removeAll();
//全選
allselect.addMouseListener(new MouseAdapter() {
@Override
public void mouseUp(MouseEvent e) {
TableItem[] items = table.getItems();
if (items != null && items.length > 0) {
for (int i = 0; i < items.length; i++) {
items[i].setChecked(true);
}
}
}
});
//反選
allnotselect.addMouseListener(new MouseAdapter() {
@Override
public void mouseUp(MouseEvent e) {
TableItem[] items = table.getItems();
if (items != null && items.length > 0) {
for (int i = 0; i < items.length; i++) {
if(items[i].getChecked()){
items[i].setChecked(false);
}else{
items[i].setChecked(true);
}
}
}
}
});
//擷取所有checkbox被選中的列 傳回一個Object數組
Object[] objects = checkboxTableViewer.getCheckedElements();
//建立List容器
List<?> list=new ArrayList<?>();
//循環Object數組
for(Object obj:objects){
//判斷obj是否屬于?對象
if(obj instanceof ?){
//強制轉換放入list中
list.add((?)obj);
}
}
CheckBoxTableViewer 中内容器、标簽器
//内容器 實作IStructuredContentProvider接口
public class TableViewContentProvider implements IStructuredContentProvider{
@SuppressWarnings("unchecked")
@Override
public Object[] getElements(Object inputElement) {
// TODO Auto-generated method stub
if(inputElement instanceof List)
return ((List)inputElement).toArray();
else
return new Object[0];
}
@Override
public void dispose() {
// TODO Auto-generated method stub
}
@Override
public void inputChanged(Viewer arg0, Object arg1, Object arg2) {
// TODO Auto-generated method stub
}
}
//标簽器
public class BeiTaiTableViewLabelProvider implements ITableLabelProvider {
@Override
public Image getColumnImage(Object element, int index) {
// TODO Auto-generated method stub
//第一列要顯示圖檔
if(index==1){
retuern new Image(null,"圖檔路徑");
}
//根據字段判斷 假如實體是userinfo判斷男女使用圖檔顯示
if(element instanceof Userinfo){
switch(index){
case 0:
return (Userinfo(element)).uname;
case 1:
return (Userinfo(element)).sex=="男"?new Image(null,"路徑"):new Image(null,"路徑");
}
}
return null;
}
@Override
public String getColumnText(Object element, int columnIndex) {
if(element instanceof BeiTaiOxygen){
switch (columnIndex) {
case 0:
return ((BeiTaiOxygen)element).getOxygen();
case 1:
return ((BeiTaiOxygen)element).getHeartRate();
case 2:
return ((BeiTaiOxygen)element).getCreatetime();
default:
return "--";
}
}
return "";
}
@Override
public void addListener(ILabelProviderListener arg0) {
// TODO Auto-generated method stub
}
@Override
public void dispose() {
// TODO Auto-generated method stub
}
@Override
public boolean isLabelProperty(Object arg0, String arg1) {
// TODO Auto-generated method stub
return false;
}
@Override
public void removeListener(ILabelProviderListener arg0) {
// TODO Auto-generated method stub
}
}