JTableをソートした後の選択状態
Total: 8185
, Today: 2
, Yesterday: 2
Posted by aterai at
Last-modified:
概要
JDK 1.6
で導入されたRowSorter
を使って、JTable
をソートした場合、直前の選択状態がどう変化するかテストします。
サンプルコード
解説
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) { //mousePressed(MouseEvent e) {
if (table.isEditing()) {
table.getCellEditor().stopCellEditing();
}
table.clearSelection();
}
});