Swing/ClearSortingState のバックアップ(No.11)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/ClearSortingState へ行く。
- 1 (2007-08-27 (月) 12:33:13)
- 2 (2007-08-27 (月) 14:45:58)
- 3 (2007-08-27 (月) 18:21:50)
- 4 (2008-04-11 (金) 18:28:37)
- 5 (2008-09-15 (月) 13:50:46)
- 6 (2013-02-01 (金) 11:33:28)
- 7 (2013-07-26 (金) 01:30:04)
- 8 (2015-01-29 (木) 15:38:21)
- 9 (2015-07-23 (木) 17:07:28)
- 10 (2016-01-12 (火) 17:54:13)
- 11 (2017-04-04 (火) 14:17:08)
- 12 (2017-06-23 (金) 12:52:26)
- 13 (2018-06-26 (火) 13:10:57)
- 14 (2020-06-09 (火) 23:50:51)
- 15 (2021-11-25 (木) 05:39:17)
- category: swing folder: ClearSortingState title: TableRowSorterのSortKeysをクリアする tags: [JTable, TableRowSorter, JTableHeader, MouseListener] author: aterai pubdate: 2007-08-27T12:33:13+09:00 description: JDK 6で導入されたTableRowSorterでの行ソートを、テーブルヘッダのShift+クリックでクリアします。 image:
概要
JDK 6
で導入されたTableRowSorter
での行ソートを、テーブルヘッダのShift+クリックでクリアします。
Screenshot
Advertisement
サンプルコード
table.setAutoCreateRowSorter(true);
table.getTableHeader().addMouseListener(new MouseAdapter() {
@Override public void mouseClicked(MouseEvent e) {
final RowSorter<? extends TableModel> sorter = table.getRowSorter();
if (sorter == null || sorter.getSortKeys().isEmpty()) {
return;
}
JTableHeader h = (JTableHeader) e.getComponent();
TableColumnModel columnModel = h.getColumnModel();
int viewColumn = columnModel.getColumnIndexAtX(e.getX());
if (viewColumn < 0) {
return;
}
int column = columnModel.getColumn(viewColumn).getModelIndex();
if (column != -1 && e.isShiftDown()) {
EventQueue.invokeLater(new Runnable() {
@Override public void run() {
sorter.setSortKeys(null);
}
});
}
}
});
View in GitHub: Java, Kotlin解説
ヘッダにマウスリスナーを設定し、Shiftキーを押しながらのクリックの場合は、TableRowSorter#setSortKeys
メソッドを使って、ソートキーを空にしています。
上記のサンプルでは、以下のような制限があります。
- ソートキーになっていないカラムヘッダをShift+クリックした場合でも、ソート状態をクリアする
行がソートされている場合は、ドラッグ&ドロップで行を入れ替え不可D&D
機能は削除