Swing/RowFilter の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/RowFilter へ行く。
- Swing/RowFilter の差分を削除
--- 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: https://lh3.googleusercontent.com/_9Z4BYR88imo/TQTST-FvjRI/AAAAAAAAAik/ZbU9nuVVCiI/s800/RowFilter.png --- * 概要 [#summary] `JDK 6`で導入された`TableRowSorter`に`RowFilter`を設定して、行のフィルタリングを行います。 #download(https://lh3.googleusercontent.com/_9Z4BYR88imo/TQTST-FvjRI/AAAAAAAAAik/ZbU9nuVVCiI/s800/RowFilter.png) * サンプルコード [#sourcecode] #code(link){{ TableRowSorter<? extends TableModel> sorter = new TableRowSorter<>(model); Collection<RowFilter<? super TestModel, ? super Integer>> filters = new HashSet<>(2); RowFilter<TableModel, Integer> filter1 = new RowFilter<TableModel, Integer>() { @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(); } }; RowFilter<TableModel, Integer> filter2 = new RowFilter<TableModel, Integer>() { @Override public boolean include( Entry<? extends TableModel, ? extends Integer> entry) { return entry.getIdentifier() % 2 == 0; } }; sorter.setRowFilter(RowFilter.andFilter(filters)); //sorter.setRowFilter(filter1); }} * 解説 [#explanation] 上記のサンプルは、以下のような複数の行フィルタを、`and`条件で`JTable`に適用しています。 上記のサンプルは、以下のような複数の行フィルタを`and`条件で`JTable`に適用しています。 - コメント列の値が空でない行のみ表示 - 行番号が偶数の場合のみ表示 -- 行番号はソートされている場合でも、元のモデルのインデックスで判断する -- 行番号はソートされている場合でも元のモデルのインデックスで判断する * 参考リンク [#reference] - [http://web.archive.org/web/20090419180550/http://java.sun.com/developer/JDCTechTips/2005/tt1115.html Splash Screens and Java SE 6, and Sorting and Filtering Tables Tech Tips] - [https://docs.oracle.com/javase/tutorial/uiswing/components/table.html#sorting Sorting and Filtering (How to Use Tables)] - [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/table/TableRowSorter.html TableRowSorter (Java Platform SE 8)] * コメント [#comment] #comment - 「`IndexOutOfBoundsException`が発生する…」は、[[TableRowSorterでJTableのソート>Swing/TableRowSorter]]に移動しました。 -- &user(aterai); &new{2011-02-04 (金) 15:19:12}; #comment