Swing/UpdateSelectionOnSort のバックアップ(No.6)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/UpdateSelectionOnSort へ行く。
- title: JTableをソートした後の選択状態 tags: [JTable, TableRowSorter, JTableHeader, MouseListener] author: aterai pubdate: 2008-03-24T14:15:18+09:00 description: JDK 1.6で導入されたRowSorterを使って、JTableをソートした場合、直前の選択状態がどう変化するかテストします。
概要
JDK 1.6
で導入されたRowSorter
を使って、JTable
をソートした場合、直前の選択状態がどう変化するかテストします。
Screenshot
Advertisement
サンプルコード
解説
UpdateSelectionOnSort
- ソート後の選択状態は、
JTable#setUpdateSelectionOnSort
メソッドで切り替えることが出来ます。 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();
}
});