天天看點

CheckboxTableViewer控件詳解

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
        
    }

}