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

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

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

    春風博客

    春天里,百花香...

    導航

    <2007年7月>
    24252627282930
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    統計

    公告

    MAIL: junglesong@gmail.com
    MSN: junglesong_5@hotmail.com

    Locations of visitors to this page

    常用鏈接

    留言簿(11)

    隨筆分類(224)

    隨筆檔案(126)

    個人軟件下載

    我的其它博客

    我的鄰居們

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    利用MouseAdapter來實現自排序的表格

    本文參考了http://www.java2s.com/Code/Java/Swing-JFC/TableSortTest.htm的做法。主要處理是取得用戶點擊的列,得到按此列排序的新數組,刪除原有元素,再把新數組加入進表格;如果已經排序,則進行逆序處理。處理完畢后,用戶點擊表頭即可實現排序和逆序。


    首先請增加這樣三個類:
    SortTableMouseAdaptor類:用以排序的關鍵類。
    public class SortTableMouseAdaptor extends MouseAdapter{
        
    private JTable table;
        
        
    public SortTableMouseAdaptor(JTable table){
            
    this.table=table;
        }

        
        
    public void mouseClicked(MouseEvent event) // check for double
            /*
             * if (event.getClickCount() < 2) return;
             
    */


            
    // find column of click and
            int tableColumn = table.columnAtPoint(event.getPoint());

            
    // translate to table model index and sort
            DefaultTableModel tableModel = (DefaultTableModel) table.getModel();

            
    int rowCount = tableModel.getRowCount();
            
    int cloumnCount = tableModel.getColumnCount();

            SortTableRow[] tableRowArr 
    = new SortTableRow[rowCount];

            
    int j;
            
    for (int i = 0; i < rowCount; i++{
                tableRowArr[i] 
    = new SortTableRow(cloumnCount, tableColumn);
                
                
    for (j = 0; j < cloumnCount; j++{
                    tableRowArr[i].setArrValue(j, tableModel.getValueAt(i,j));
                }

            }

            
            SortCompareColum compareColum
    =new SortCompareColum(rowCount);
            
    for (int i = 0; i < rowCount; i++{
                compareColum.setArrValue(i, tableModel.getValueAt(i,tableColumn));
            }

            
            tableModel.setRowCount(
    0);
            Arrays.sort(tableRowArr);
            
            
    if(compareColum.isSorted()){
                List ls
    =Arrays.asList(tableRowArr);
                Collections.reverse(ls);
                
                
    for (int i = 0; i < ls.size(); i++{
                    SortTableRow tableRow
    =(SortTableRow)ls.get(i);
                    
                    tableModel.addRow(tableRow.getArr());
                }

            }

            
    else{                
                
    for (int i = 0; i < tableRowArr.length; i++{
                    tableModel.addRow(tableRowArr[i].getArr());
                }

            }


            
            table.invalidate();
        }

    }

    SortCompareColum類,可以作為SortTableMouseAdaptor類的內部類使用:
    public class SortCompareColum{
        
    private Object[] arr;
        
        
    public SortCompareColum(int arrLength){
            arr 
    = new Object[arrLength];
        }

        
        
    public void setArrValue(int i, Object value) {
            arr[i] 
    = value;
        }

        
        
    public boolean isSorted(){
            
    boolean retval=true;
            
            
    for(int i=0;i<arr.length-1;i++){
                
                
    try{
                    
    int op1 =Integer.valueOf((String) arr[i]);
                    
    int op2 = Integer.valueOf((String) arr[i+1]);
                    
                    retval
    =retval && (op1-op2>0?false:true);
                }

                
    catch(Exception e){
                    String op1 
    = (String) arr[i];
                    String op2 
    = (String) arr[i+1];
                    
                    retval
    =retval && (op1.compareTo(op2)>0?false:true);
                }

            }

            
            
    return retval;
        }

    }


    SortTableRow類,可以作為SortTableMouseAdaptor類的內部類使用:
    public class SortTableRow implements Comparable {
        
    private Object[] arr;

        
    public int compareColumnIndex;

        
    public SortTableRow(int arrLength, int compareColumnIndex) {
            arr 
    = new Object[arrLength];
            ;
            
    this.compareColumnIndex = compareColumnIndex;
        }


        
    public void setArrValue(int i, Object value) {
            arr[i] 
    = value;
        }


        
    public int compareTo(Object other) {
            SortTableRow another 
    = (SortTableRow) other;

            
    try{            
                String op1 
    = (String) this.getCompareObj();
                String op2 
    = (String) another.getCompareObj();
                
    int op3=Integer.valueOf(op1);
                
    int op4=Integer.valueOf(op2);
                
                
    return op3-op4;
            }

            
    catch(Exception ex){
                String op1 
    = (String) this.getCompareObj();
                String op2 
    = (String) another.getCompareObj();
                
    return op1.compareTo(op2);
            }
            
        }

        
        
    public Object[] getArr() {
            
    return arr;
        }


        
    public Object getCompareObj() {
            
    return arr[compareColumnIndex];
        }

    }


    使用時對需要排序的表格進行如下處理就行了,很簡單方便:
    table.getTableHeader().addMouseListener(new SortTableMouseAdaptor(table));

    三個類打包下載在此,歡迎試用:
    http://m.tkk7.com/Files/sitinspring/sortTable20070712105832.rar

    posted on 2007-07-09 15:58 sitinspring 閱讀(1658) 評論(2)  編輯  收藏 所屬分類: Swing

    評論

    # re: 利用MouseAdapter來實現自排序的表格 2007-07-09 17:00 交口稱贊

    學習Java6(九)Table(1)排序表格
    http://m.tkk7.com/vip01/archive/2007/05/14/117244.html


    java6生成排序表格,推薦看下,算是打個廣告
      回復  更多評論   

    # re: 利用MouseAdapter來實現自排序的表格 2007-07-10 09:15 sitinspring

    Jdk6的排序表格是不錯,就是適用性窄一點,很多人還在1.4下,這時就得自己動手了.  回復  更多評論   

    sitinspring(http://m.tkk7.com)原創,轉載請注明出處.
    主站蜘蛛池模板: 国产成人无码区免费网站| 国内精品免费麻豆网站91麻豆| 亚洲一区二区三区无码中文字幕| a级毛片在线免费| 亚洲精品白色在线发布| 免费爱爱的视频太爽了| 美女被cao网站免费看在线看| 亚洲国产av美女网站| 国产精品黄页在线播放免费| 最新国产乱人伦偷精品免费网站 | 日韩精品极品视频在线观看免费 | 日韩色视频一区二区三区亚洲| 伊人亚洲综合青草青草久热| 国产成人精品免费视频网页大全 | 国产精品福利片免费看| 666精品国产精品亚洲| 国产免费AV片无码永久免费| 香港a毛片免费观看 | 亚洲国产精品美女| 亚洲国产天堂久久久久久| 巨波霸乳在线永久免费视频 | 亚洲av日韩av永久无码电影| 亚洲第一福利网站| 亚洲国产精品13p| 无人在线观看完整免费版视频| 在线观看人成视频免费无遮挡| 亚洲AV无码专区在线厂| 亚洲男女性高爱潮网站| 亚洲色无码专区在线观看| 国产麻豆剧传媒精品国产免费| 永久在线免费观看| 最近的2019免费中文字幕| 无套内谢孕妇毛片免费看看 | 1000部国产成人免费视频| 99视频在线观看免费| 青青草97国产精品免费观看| 亚洲 日韩 色 图网站| 中文字幕亚洲精品资源网| 亚洲午夜久久久久久久久电影网| 免费观看午夜在线欧差毛片| 91黑丝国产线观看免费|