JTableをソートした後の選択状態
Total: 9173
, Today: 1
, Yesterday: 2
Posted by aterai at
Last-modified:
概要
JDK 1.6
で導入されたRowSorter
を使って、JTable
をソートした場合、直前の選択状態がどう変化するかテストします。
Screenshot
Advertisement
サンプルコード
解説
UpdateSelectionOnSort
- ソート後の選択状態は
JTable#setUpdateSelectionOnSort(boolean)
メソッドで切り替えることが可能 setUpdateSelectionOnSort(true)
- ソート前と「同じ内容の行」が選択された状態になる(デフォルト)
setUpdateSelectionOnSort(false)
- ソート前と「表示上同じ行」が選択された状態になる
- ソート後の選択状態は
ClearSelectionOnSort
- ソート後に選択状態をクリアする場合は
TableRowSorter#toggleSortOrder(int)
をオーバーライドしたり、以下のようにJTableHeader
にMouseListener
を追加してtable.clearSelection()
を実行する必要がある - チェックなし
- 選択状態を維持(デフォルト)
- チェックあり
- ソート後は選択状態をクリア
JDK 1.5
などでTableSorter.java
を使用した場合の動作と同じになるように設定するtable.getTableHeader().addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { if (table.isEditing()) { table.getCellEditor().stopCellEditing(); } table.clearSelection(); } });
- ソート後に選択状態をクリアする場合は