Swing/TriStateSorting のバックアップ差分(No.5)
- バックアップ一覧
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- バックアップ を表示
- Swing/TriStateSorting へ行く。
- 1 (2008-09-15 (月) 17:36:51)
- 2 (2008-09-16 (火) 13:50:35)
- 3 (2008-09-25 (木) 14:23:27)
- 4 (2010-11-09 (火) 18:03:00)
- 5 (2013-01-17 (木) 15:18:32)
- 6 (2014-03-18 (火) 18:41:07)
- 7 (2014-10-14 (火) 13:47:03)
- 8 (2014-11-28 (金) 16:28:17)
- 9 (2016-01-12 (火) 17:59:23)
- 10 (2017-06-27 (火) 13:56:04)
- 11 (2017-11-07 (火) 18:11:59)
- 12 (2018-02-24 (土) 19:51:30)
- 13 (2020-01-29 (水) 18:49:20)
- 14 (2021-07-24 (土) 23:34:29)
- 追加された行はこの色です。
- 削除された行はこの色です。
TITLE:TableRowSorterのソートをヘッダクリックで昇順、降順、初期状態に変更 #navi(../) RIGHT:Posted by [[terai]] at 2008-09-15 #tags() RIGHT:Posted by &author(aterai); at 2008-09-15 *TableRowSorterのソートをヘッダクリックで昇順、降順、初期状態に変更 [#qcd17147] JDK 6 で導入された TableRowSorter のソートを、TableSorter.java のようにヘッダクリックで昇順、降順、初期状態に切り替わるように設定します。 -&jnlp; -&jar; -&zip; #screenshot //#screenshot #ref(http://lh4.ggpht.com/_9Z4BYR88imo/TQTWVWrGvdI/AAAAAAAAApE/-DL1kAZzGsM/s800/TriStateSorting.png) **サンプルコード [#l29c9a20] #code{{ TestModel model = new TestModel(); #code(link){{ TableModel model = makeTestTableModel(); JTable table = new JTable(model); TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(model) { @Override public void toggleSortOrder(int column) { @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); }} **解説 [#lc89320d] 上記のサンプルでは、TableRowSorter#toggleSortOrder(int) をオーバーライドして、クリックした列がソートの第一キーで、ソート順序が DESCENDING の場合、ソートキーをクリアしています。このため、同じヘッダを三回クリックすると、昇順(ASCENDING)、降順(DESCENDING)、初期状態(UNSORTED)と遷移して元に戻るようになっています。 **参考リンク [#qf7f31ba] -[[TableRowSorterでJTableのソート>Swing/TableRowSorter]] -[[TableRowSorterのSortKeysをクリアする>Swing/ClearSortingState]] **コメント [#s4c0fcaa] - スクリーンショットを更新 -- [[terai]] &new{2008-09-25 (木) 14:23:27}; - スクリーンショットを更新 -- [[aterai]] &new{2008-09-25 (木) 14:23:27}; #comment