Swing/UpdateSelectionOnSort のバックアップ(No.15)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/UpdateSelectionOnSort へ行く。
- 1 (2008-03-24 (月) 14:15:18)
- 2 (2008-03-24 (月) 17:28:29)
- 3 (2008-09-24 (水) 12:55:07)
- 4 (2013-10-11 (金) 12:54:07)
- 5 (2015-02-05 (木) 14:40:12)
- 6 (2016-05-27 (金) 15:50:33)
- 7 (2017-09-06 (水) 13:59:11)
- 8 (2018-11-20 (火) 16:00:10)
- 9 (2020-11-06 (金) 09:17:55)
- 10 (2022-10-22 (土) 22:52:31)
- 11 (2025-01-03 (金) 08:57:02)
- 12 (2025-01-03 (金) 09:01:23)
- 13 (2025-01-03 (金) 09:02:38)
- 14 (2025-01-03 (金) 09:03:21)
- 15 (2025-01-03 (金) 09:04:02)
- category: swing
folder: UpdateSelectionOnSort
title: JTableをソートした後の選択状態
tags: [JTable, TableRowSorter, JTableHeader, MouseListener]
author: aterai
pubdate: 2008-03-24T14:15:18+09:00
description: JDK 1.6で導入されたRowSorterを使って、JTableをソートした場合、直前の選択状態がどう変化するかテストします。
image:
Summary
JDK 1.6
で導入されたRowSorter
を使って、JTable
をソートした場合、直前の選択状態がどう変化するかテストします。
Screenshot

Advertisement
Source Code Examples
Explanation
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(); } });
- ソート後に選択状態をクリアする場合は