Swing/RowFilter のバックアップの現在との差分(No.18)
- category: swing folder: RowFilter title: RowFilterでJTableの行をフィルタリング tags: [JTable, TableRowSorter, RowFilter] author: aterai pubdate: 2007-09-03T15:45:16+09:00 description: JDK 6で導入されたTableRowSorterにRowFilterを設定して、行のフィルタリングを行います。 image:
概要
JDK 6
で導入されたTableRowSorter
にRowFilter
を設定して、行のフィルタリングを行います。
Screenshot
Advertisement
サンプルコード
#spandel
final TableRowSorter<? extends TableModel> sorter = new TableRowSorter<>(model);
#spanend
#spandel
final Set<RowFilter<? super TestModel, ? super Integer>> filters = new HashSet<>(2);
#spanend
#spandel
final RowFilter<TableModel, Integer> filter1 = new RowFilter<TableModel, Integer>() {
#spanend
#spanadd
TableRowSorter<? extends TableModel> sorter = new TableRowSorter<>(model);
#spanend
#spanadd
Collection<RowFilter<? super TestModel, ? super Integer>> filters = new HashSet<>(2);
#spanend
#spanadd
RowFilter<TableModel, Integer> filter1 = new RowFilter<TableModel, Integer>() {
#spanend
@Override public boolean include(
Entry<? extends TableModel, ? extends Integer> entry) {
TableModel model = entry.getModel();
Test t = model.getTest(entry.getIdentifier());
return !t.getComment().trim().isEmpty();
}
};
#spandel
final RowFilter<TableModel, Integer> filter2 = new RowFilter<TableModel, Integer>() {
#spanend
#spanadd
RowFilter<TableModel, Integer> filter2 = new RowFilter<TableModel, Integer>() {
#spanend
@Override public boolean include(
Entry<? extends TableModel, ? extends Integer> entry) {
return entry.getIdentifier() % 2 == 0;
}
};
sorter.setRowFilter(RowFilter.andFilter(filters));
//sorter.setRowFilter(filter1);
View in GitHub: Java, Kotlin解説
上記のサンプルは、以下のような複数の行フィルタを、and
条件でJTable
に適用することができます。
上記のサンプルは、以下のような複数の行フィルタをand
条件でJTable
に適用しています。
- コメント列の値が空でない行のみ表示
- 行番号が偶数の場合のみ表示
- 行番号はソートされている場合でも、元のモデルのインデックスで判断する
- 行番号はソートされている場合でも元のモデルのインデックスで判断する
参考リンク
- Splash Screens and Java SE 6, and Sorting and Filtering Tables Tech Tips
- Sorting and Filtering (How to Use Tables)
- TableRowSorter (Java Platform SE 8)