Swing/UpdateSelectionOnSort のバックアップ差分(No.5)
- バックアップ一覧
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- バックアップ を表示
- Swing/UpdateSelectionOnSort へ行く。
- 追加された行はこの色です。
- 削除された行はこの色です。
TITLE:JTableをソートした後の選択状態 #navi(../) #tags(JTable, TableRowSorter, JTableHeader, MouseListener) RIGHT:Posted by &author(aterai); at 2008-03-24 * JTableをソートした後の選択状態 [#ke69df21] ``JDK 1.6``で導入された``RowSorter``を使って、``JTable``をソートした場合、直前の選択状態がどう変化するかテストします。 --- title: JTableをソートした後の選択状態 tags: [JTable, TableRowSorter, JTableHeader, MouseListener] author: aterai pubdate: 2008-03-24T14:15:18+09:00 description: JDK 1.6で導入されたRowSorterを使って、JTableをソートした場合、直前の選択状態がどう変化するかテストします。 --- * 概要 [#ke69df21] `JDK 1.6`で導入された`RowSorter`を使って、`JTable`をソートした場合、直前の選択状態がどう変化するかテストします。 - &jnlp; - &jar; - &zip; #download(https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTWaXC_E3I/AAAAAAAAApM/H9h2pJw-VSQ/s800/UpdateSelectionOnSort.png) #ref(https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTWaXC_E3I/AAAAAAAAApM/H9h2pJw-VSQ/s800/UpdateSelectionOnSort.png) ** サンプルコード [#rfe93d8e] * サンプルコード [#rfe93d8e] #code(link){{ table.setUpdateSelectionOnSort(true); }} ** 解説 [#ib5c8542] - ``UpdateSelectionOnSort`` -- ソート後の選択状態は、``JTable#setUpdateSelectionOnSort``メソッドで切り替えることが出来ます。 -- ``setUpdateSelectionOnSort(true)`` * 解説 [#ib5c8542] - `UpdateSelectionOnSort` -- ソート後の選択状態は、`JTable#setUpdateSelectionOnSort`メソッドで切り替えることが出来ます。 -- `setUpdateSelectionOnSort(true)` --- ソート前と、「同じ内容の行」が選択された状態になる(デフォルト) -- ``setUpdateSelectionOnSort(false)`` -- `setUpdateSelectionOnSort(false)` --- ソート前と、「表示上同じ行」が選択された状態になる - ``ClearSelectionOnSort`` -- メソッドが用意されているわけではないので、選択状態をクリアする場合は、``TableRowSorter#toggleSortOrder(int)``をオーバーライドしたり、以下のように``JTableHeader``に``MouseListener``を追加して、``table.clearSelection()``する必要があります。 - `ClearSelectionOnSort` -- メソッドが用意されているわけではないので、選択状態をクリアする場合は、`TableRowSorter#toggleSortOrder(int)`をオーバーライドしたり、以下のように`JTableHeader`に`MouseListener`を追加して、`table.clearSelection()`する必要があります。 -- チェックなし --- 選択状態を維持(デフォルト) -- チェックあり --- ソート後は選択状態をクリア --- ``JDK 1.5``などで``TableSorter.java``を使用した場合の動作と同じになるように --- `JDK 1.5`などで`TableSorter.java`を使用した場合の動作と同じになるように #code{{ table.getTableHeader().addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { //mousePressed(MouseEvent e) { @Override public void mouseClicked(MouseEvent e) { //mousePressed(MouseEvent e) { if(table.isEditing()) table.getCellEditor().stopCellEditing(); table.clearSelection(); } }); }} //**参考リンク ** コメント [#o297f6ce] //* 参考リンク * コメント [#o297f6ce] #comment #comment