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

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

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

    用動作去驅動未來

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

     

    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);
                
                //將字符串類型數據轉化為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;
            }
         }
        
         /**
          * 判斷當前選中列的數據類型
          * @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 黑螞蟻 閱讀(2170) 評論(0)  編輯  收藏 所屬分類: SWT,JFACE

    導航

    統計

    公告

    路在腳下,此刻,出發。

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    相冊

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲精品无码国产| 1000部啪啪毛片免费看| 免费黄色小视频网站| 亚洲日韩国产精品无码av| a级午夜毛片免费一区二区| 国产亚洲精品线观看动态图| 香港经典a毛片免费观看看| 国产精品黄页在线播放免费| 亚洲AV成人一区二区三区观看 | 毛色毛片免费观看| 亚洲AV色吊丝无码| 嫩草影院在线免费观看| 亚洲性色AV日韩在线观看| 免费激情视频网站| 全黄A免费一级毛片| 国产aⅴ无码专区亚洲av麻豆 | 亚洲免费观看网站| 亚洲中文字幕久久精品无码VA| 夜夜爽免费888视频| 国产亚洲综合精品一区二区三区| 亚洲国产精品成人久久蜜臀 | 97在线观看永久免费视频| 亚洲综合一区二区三区四区五区| 免费毛片网站在线观看| fc2成年免费共享视频网站| 亚洲AV无码国产精品麻豆天美 | 亚洲邪恶天堂影院在线观看| 性做久久久久久久免费看| 麻豆亚洲AV成人无码久久精品| 亚洲AV之男人的天堂| 午夜在线免费视频 | 亚洲一区二区三区偷拍女厕| 日韩免费无码一区二区三区| 亚洲中文字幕无码中文| 亚洲精品和日本精品| 1000部羞羞禁止免费观看视频| 国产午夜亚洲精品不卡免下载| 久久亚洲精品成人| 暖暖免费高清日本中文| 国产色无码精品视频免费| 亚洲第一男人天堂|