<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    用動作去驅(qū)動未來

    生命在于運動,讓自己身體的每一個細胞都動起來吧.

     

    java swt table 點擊表頭排序

    public class PickerShellTableSort {
        private Table table;
        private Image upImage;
        private Image downImage;
        
        private int[] sortFlags;
        private int[] sortColIndexes;
        
        public PickerShellTableSort(Table table) {
            int[] sortCols = new int[table.getColumnCount()];
            for (int i = 1; i < sortCols.length; i++) {
                sortCols[i] = i;
            }
            
            this.table = table;
            this.sortColIndexes = sortCols;     //需要排序的索引
            this.sortFlags = new int[table.getColumnCount()];
            
            init();
        }
        
        private void init() {
            for (int i = 0; i < sortColIndexes.length; i++) {
                final int sortColIndex = this.sortColIndexes[i];
                TableColumn col = table.getColumn(sortColIndex);
                
                col.addListener(SWT.Selection, new Listener() {
                    public void handleEvent(Event event) {
                        columnHandleEvent(event, sortColIndex);
                    }
                });
            }
            
            this.upImage = FrameCommonActivator.getImageDescriptor("icons/up.gif").createImage();
            this.downImage = FrameCommonActivator.getImageDescriptor("icons/down.gif").createImage();
        }
        
        private void columnHandleEvent(Event event, int sortColIndex) {
            try {
                for (int i = 0; i < sortColIndexes.length; i++) {
                    TableColumn tabCol = table.getColumn(i);
                    tabCol.setImage(null);
                }
                
                boolean selectColumnType = this.isStringOrNumberType(sortColIndex);
                
                 if (this.sortFlags[sortColIndex] == 1) {
                     clearSortFlags();
                    this.sortFlags[sortColIndex] = -1;
                    
                    if(selectColumnType) {
                        this.addNumberSorter(table.getColumn(sortColIndex), true);
                    } else {
                        this.addStringSorter(table.getColumn(sortColIndex), true);
                    }
                    
                    table.getColumn(sortColIndex).setImage(this.upImage);
                } else {
                    this.sortFlags[sortColIndex] = 1;
                    
                    if(selectColumnType) {
                        this.addNumberSorter(table.getColumn(sortColIndex), false);
                    } else {
                        this.addStringSorter(table.getColumn(sortColIndex), false);
                    }
                    
                    table.getColumn(sortColIndex).setImage(this.downImage);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        
        /**
         * @param table
         * @param column
         * @param isAscend  
         */
        private void addStringSorter(TableColumn column,boolean isAscend) {
            
              Collator comparator = Collator.getInstance(Locale.getDefault());
              int columnIndex = getColumnIndex(table, column);
              TableItem[] items = table.getItems();
              //使用冒泡法進行排序
              for (int i = 1; i < items.length; i++) {
                  String str2value = items[i].getText(columnIndex);
                  if(str2value.equalsIgnoreCase("")){
                     //當遇到表格中的空項目時,就停止往下檢索排序項目
                     break;
                  }
                  for (int j = 0; j < i; j++) {
                     String str1value = items[j].getText(columnIndex);
                     boolean isLessThan = comparator.compare(str2value, str1value) < 0;     
                     if ((isAscend && isLessThan) || (!isAscend && !isLessThan)) {
                          String[] values = getTableItemText(table, items[i]);
                          Object obj = items[i].getData();
                          items[i].dispose();
                          TableItem item = new TableItem(table, SWT.NONE, j);
                          item.setText(values);
                          item.setData(obj);
                          items = table.getItems();
                          break;
                     }
                  }
               }
               table.setSortColumn(column);
               table.setSortDirection((isAscend ? SWT.UP : SWT.DOWN));
               isAscend = !isAscend;
          }
        
        
        private void addNumberSorter(TableColumn column,boolean isAscend) {
            
              int columnIndex = getColumnIndex(table, column);
              TableItem[] items = table.getItems();
              //使用冒泡法進行排序
              for (int i = 1; i < items.length; i++) {
               String strvalue2 = items[i].getText(columnIndex);
               if(strvalue2.equalsIgnoreCase("")){
                //當遇到表格中的空項目時,就停止往下檢索排序項目
                break;
               }
               
               for (int j = 0; j < i; j++) {
                String strvalue1 = items[j].getText(columnIndex);
                
                //將字符串類型數(shù)據(jù)轉(zhuǎn)化為float類型
                float numbervalue1=Float.valueOf(strvalue1);
                float numbervalue2=Float.valueOf(strvalue2);
                
                boolean isLessThan =false;
                if(numbervalue2<numbervalue1){
                    isLessThan =true;
                }    
                
                if ((isAscend && isLessThan) || (!isAscend && !isLessThan)) {
                     String[] values = getTableItemText(table, items[i]);
                     Object obj = items[i].getData();
                     items[i].dispose();
                     TableItem item = new TableItem(table, SWT.NONE, j);
                     item.setText(values);
                     item.setData(obj);
                     items = table.getItems();
                     break;
                }
               }
              }
              
              table.setSortColumn(column);
              table.setSortDirection((isAscend ? SWT.UP : SWT.DOWN));
              isAscend = !isAscend;
         }
        
        private  int getColumnIndex(Table table, TableColumn column) {
            TableColumn[] columns = table.getColumns();
            for (int i = 0; i < columns.length; i++) {
                if (columns[i].equals(column))
                    return i;
            }
            return -1;
         }
        
        private  String[] getTableItemText(Table table, TableItem item) {
            int count = table.getColumnCount();
            String[] strs = new String[count];
            for (int i = 0; i < count; i++) {
                strs[i] = item.getText(i);
            }
            return strs;
         }

         private void clearSortFlags() {
            for (int i = 0; i < table.getColumnCount(); i++) {
                this.sortFlags[i] = 0;
            }
         }
        
         /**
          * 判斷當前選中列的數(shù)據(jù)類型
          * @return
          */
         private boolean isStringOrNumberType(int selectColumnIndex) {
             boolean isok = false ;
            
             TableItem[] items = table.getItems();
             String[] str = new String[items.length];
            
             for (int i = 0; i < items.length; i++) {
                 str[i] = items[i].getText(selectColumnIndex);
             }
            
             for (int i = 0; i < str.length; i++) {
                String string = str[i];
                isok = string.matches("^(-|\\+)?\\d+\\.?\\d*$");
                //如果這一列中有一個是字符串,也按字符串排序
                if(!isok) {
                    return isok;
                }
             }
            
             return isok ;
         }
        
    }

    posted on 2012-04-24 09:56 黑螞蟻 閱讀(2168) 評論(0)  編輯  收藏 所屬分類: SWT,JFACE

    導航

    統(tǒng)計

    公告

    路在腳下,此刻,出發(fā)。

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    相冊

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 成人黄色免费网站| 国产精品福利在线观看免费不卡| 2021在线永久免费视频| 亚洲精品国偷自产在线| 暖暖免费日本在线中文| 久久久亚洲裙底偷窥综合| 日本一卡精品视频免费| 亚洲黄色三级视频| 台湾一级毛片永久免费| 亚洲AV永久无码精品一福利 | 国产成人综合亚洲绿色| 女人18毛片水最多免费观看| 国产精品亚洲小说专区| 亚洲国产精品成人一区| 男女拍拍拍免费视频网站| 久久夜色精品国产嚕嚕亚洲av| 95免费观看体验区视频| 激情综合亚洲色婷婷五月| 日韩一区二区免费视频| jizz18免费视频| 亚洲天堂中文字幕| 天天看免费高清影视| 人碰人碰人成人免费视频| 亚洲国产精品无码久久久不卡| 最近2019免费中文字幕6| 亚洲а∨天堂久久精品9966| 免费在线观看污网站| 久久免费高清视频| 7777久久亚洲中文字幕| 亚洲免费一区二区| 日本免费一区二区三区| 亚洲欧美aⅴ在线资源| 亚洲男人av香蕉爽爽爽爽| 9420免费高清在线视频| 成人亚洲国产精品久久| 亚洲AV本道一区二区三区四区| 在线观看日本免费a∨视频| 青青青视频免费观看| 亚洲一区中文字幕久久| 国产一区二区三区无码免费| 久久午夜夜伦鲁鲁片免费无码 |