随笔 - 45, 文章 - 6, 评论 - 4, 引用 - 0
数据加载中……

TableRowSorterのソートをヘッダクリックで昇順、降順、初期状態に変更


TableRowSorterのソートをヘッダクリックで昇順、降順、初期状態に変更

Posted by terai at 2008-09-15

概要

JDK 6 で導入された TableRowSorter のソートを、TableSorter.java のようにヘッダクリックで昇順、降順、初期状態に切り替わるように設定します。

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)、初期状態(UNSORTED)と遷移して元に戻るようになっています。

posted on 2008-10-14 17:54 liyang 阅读(674) 评论(0)  编辑  收藏