• 追加された行はこの色です。
  • 削除された行はこの色です。
TITLE:JTableがデフォルトでソートする列を設定する
#navi(../)
RIGHT:Posted by [[aterai]] at 2011-06-06
*JTableがデフォルトでソートする列を設定する [#t18d1eb2]
JTableがデフォルトでソートする列とその方向を設定します。
---
category: swing
folder: DefaultSortingColumn
title: JTableがデフォルトでソートする列を設定する
tags: [JTable, RowSorter]
author: aterai
pubdate: 2011-06-06T18:40:01+09:00
description: JTableがデフォルトでソートする列とその方向を設定します。
image: https://lh5.googleusercontent.com/-qvzRq_TxwSg/Texuvm22ELI/AAAAAAAAA84/DhfjZ3TEATk/s800/DefaultSortingColumn.png
---
* 概要 [#summary]
`JTable`がデフォルトでソートする列とその方向を設定します。

-&jnlp;
-&jar;
-&zip;
#download(https://lh5.googleusercontent.com/-qvzRq_TxwSg/Texuvm22ELI/AAAAAAAAA84/DhfjZ3TEATk/s800/DefaultSortingColumn.png)

//#screenshot
#ref(https://lh5.googleusercontent.com/-qvzRq_TxwSg/Texuvm22ELI/AAAAAAAAA84/DhfjZ3TEATk/s800/DefaultSortingColumn.png)

**サンプルコード [#a2768444]
#code{{
* サンプルコード [#sourcecode]
#code(link){{
JTable table = new JTable(model);
table.setAutoCreateRowSorter(true);
int index = 0;
//table.getRowSorter().toggleSortOrder(index); //SortOrder.ASCENDING
table.getRowSorter().setSortKeys(
    Arrays.asList(new RowSorter.SortKey(index, SortOrder.DESCENDING)));
// table.getRowSorter().toggleSortOrder(index); // SortOrder.ASCENDING
RowSorter.SortKey key = new RowSorter.SortKey(index, SortOrder.DESCENDING);
table.getRowSorter().setSortKeys(Collections.singletonList(key));
}}

**解説 [#h11e48c2]
上記のサンプルでは、RowSorter#setSortKeys(...)を使って、指定の列のソート順序(ここでは、0列目をSortOrder.DESCENDINGで降順)のリストを設定しています。
----
- RowSorter#setSortKeys(null)で、ソート無し状態になる
-- [TableRowSorterのSortKeysをクリアする>Swing/ClearSortingState]
----
table.getRowSorter().toggleSortOrder(index)を一回で昇順、二回で降順に設定する方法もあります。
* 解説 [#explanation]
上記のサンプルでは、マウスでヘッダをクリックすることなく、起動後の初期状態で`JTable`のソートを実行する列を指定しています。

**参考リンク [#p9343c5c]
- [TableRowSorterのSortKeysをクリアする>Swing/ClearSortingState]
- `RowSorter#setSortKeys(...)`を使用するので列のソート順序が指定可能
-- 例: `0`列目を`SortOrder.DESCENDING`(降順)でソートなど
- `table.getRowSorter().toggleSortOrder(index)`を`1`回で昇順、`2`回で降順に設定する方法もある
- `RowSorter#setSortKeys(null)`でソート無し状態になる
-- [[TableRowSorterのSortKeysをクリアする>Swing/ClearSortingState]]

**コメント [#c094ddb6]
* 参考リンク [#reference]
- [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/RowSorter.html#setSortKeys-java.util.List- RowSorter#setSortKeys(...) (Java Platform SE 8)]
- [[TableRowSorterのSortKeysをクリアする>Swing/ClearSortingState]]

* コメント [#comment]
#comment
#comment