• category: swing folder: FilterWithoutSorting title: JTableのRowSorterをフィルタありソート不可にする tags: [JTable, TableRowSorter] author: aterai pubdate: 2008-08-04T00:17:37+09:00 description: フィルタありでソート不可のTableRowSorterを作成します。 image: https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTMr425A3I/AAAAAAAAAZk/ZFpsuUZWGcQ/s800/FilterWithoutSorting.png

概要

概要

フィルタありでソート不可のTableRowSorterを作成します。

サンプルコード

サンプルコード

#spandel
final TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(model) {
#spanend
#spanadd
ableRowSorter<TableModel> sorter = new TableRowSorter<>(model) {
#spanend
  @Override public boolean isSortable(int column) {
    return false;
  }
};
sorter.setRowFilter(new RowFilter<TableModel, Integer>() {
  @Override public boolean include(Entry<? extends TableModel, ? extends Integer> entry) {
    return entry.getIdentifier() % 2 == 0;
  }
});
View in GitHub: Java, Kotlin

解説

上記のサンプルでは、行フィルタだけ利用して、行のソートは出来なくしておきたいので、sorterに以下のような設定をしています。

解説

上記のサンプルでは、行のフィルタリングのみ有効にして行のソートは不可にするためTableRowSorterに以下のような設定をしています。
  • DefaultRowSorter#setRowFilter(RowFilter)で偶数行だけ表示するフィルタを設定
  • DefaultRowSorter#isSortable(int)をオーバーライドして常にfalseを返す

DefaultRowSorter#setSortable(int, boolean)を使用して、一部の列だけソート不可にすることもできます。
  • DefaultRowSorter#setSortable(int, boolean)メソッドを使用して一部の列だけソート不可にする方法もある

参考リンク

参考リンク

コメント

コメント