TITLE:JTableをソートした後の選択状態

JTableをソートした後の選択状態

編集者:Terai Atsuhiro
作成日:2008-03-24
更新日:2022-10-22 (土) 22:52:31

概要

JDK 1.6 で導入された RowSorter を使って、JTableをソートした場合、直前の選択状態がどう変化するかテストします。

#screenshot

サンプルコード

table.setUpdateSelectionOnSort(true);
  • &jnlp;
  • &jar;
  • &zip;

解説

ソート後の、選択状態は、JTable#setUpdateSelectionOnSort メソッドで切り替えることが出来ます。

  • setUpdateSelectionOnSort(true)
    • ソート前と、「同じ内容の列」が選択された状態になる
    • デフォルト
  • setUpdateSelectionOnSort(false)
    • ソート前と、「表示上同じ列」が選択された状態になる

JDK 1.5 などで、TableSorter.java を使用したときと同じように、ソート後は選択状態をクリアする場合は、以下のようにJTableHeader に MouseListener を追加して、table.clearSelection() する方法などがあります。

table.getTableHeader().addMouseListener(new MouseAdapter() {
  @Override 
  public void mouseClicked(MouseEvent e) { //mousePressed(MouseEvent e) {
    if(table.isEditing()) table.getCellEditor().stopCellEditing();
    table.clearSelection();
  }
});

コメント