隨筆 - 45, 文章 - 6, 評論 - 4, 引用 - 0
          數(shù)據(jù)加載中……

          TableRowSorterのソートをヘッダクリックで昇順、降順、初期狀態(tài)に変更


          TableRowSorterのソートをヘッダクリックで昇順、降順、初期狀態(tài)に変更

          Posted by terai at 2008-09-15

          概要

          JDK 6 で導(dǎo)入された TableRowSorter のソートを、TableSorter.java のようにヘッダクリックで昇順、降順、初期狀態(tài)に切り替わるように設(shè)定します。

          Swing/TriStateSorting screenshot

          サンプルコード

          TestModel model = new TestModel();
          JTable table = new JTable(model);
          TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(model) {
           
          @Override
           
          public void toggleSortOrder(int column) {
             
          if(column>=0 && column<getModelWrapper().getColumnCount() && isSortable(column)) {
               
          List<SortKey> keys = new ArrayList<SortKey>(getSortKeys());
               
          if(!keys.isEmpty()) {
                 
          SortKey sortKey = keys.get(0);
                 
          if(sortKey.getColumn()==column && sortKey.getSortOrder()==SortOrder.DESCENDING) {
                    setSortKeys
          (null);
                   
          return;
                 
          }
               
          }
             
          }
             
          super.toggleSortOrder(column);
           
          }
          };
          table
          .setRowSorter(sorter);

          解説

          上記のサンプルでは、TableRowSorter#toggleSortOrder(int) をオーバーライドして、クリックした列がソートの第一キーで、ソート順序が DESCENDING の場合、ソートキーをクリアしています。このため、同じヘッダを三回クリックすると、昇順(ASCENDING)、降順(DESCENDING)、初期狀態(tài)(UNSORTED)と遷移して元に戻るようになっています。

          posted on 2008-10-14 17:54 liyang 閱讀(697) 評論(0)  編輯  收藏

          主站蜘蛛池模板: 恭城| 长宁县| 鄂伦春自治旗| 嫩江县| 汤阴县| 珲春市| 永登县| 奉化市| 繁峙县| 鹤峰县| 青铜峡市| 当涂县| 彝良县| 梨树县| 武义县| 奉新县| 海盐县| 潜山县| 建昌县| 出国| 陕西省| 光山县| 海门市| 朝阳区| 崇左市| 安徽省| 河西区| 望城县| 临漳县| 长沙市| 收藏| 泰宁县| 天水市| 河东区| 洞头县| 焦作市| 大埔县| 河北省| 乌拉特前旗| 泸溪县| 天等县|