• 追加された行はこの色です。
  • 削除された行はこの色です。
TITLE:RowFilterでJTableの行をフィルタリング
#navi(../)
#tags()
#tags(JTable, TableRowSorter, RowFilter)
RIGHT:Posted by &author(aterai); at 2007-09-03
*RowFilterでJTableの行をフィルタリング [#k5e18a60]
JDK 6 で導入されたTableRowSorterにRowFilterを設定して、行のフィルタリングを行います。
* RowFilterでJTableの行をフィルタリング [#k5e18a60]
``JDK 6``で導入された``TableRowSorter``に``RowFilter``を設定して、行のフィルタリングを行います。

-&jnlp;
-&jar;
-&zip;
- &jnlp;
- &jar;
- &zip;

//#screenshot
#ref(http://lh3.ggpht.com/_9Z4BYR88imo/TQTST-FvjRI/AAAAAAAAAik/ZbU9nuVVCiI/s800/RowFilter.png)
#ref(https://lh3.googleusercontent.com/_9Z4BYR88imo/TQTST-FvjRI/AAAAAAAAAik/ZbU9nuVVCiI/s800/RowFilter.png)

**サンプルコード [#n69c6a49]
** サンプルコード [#n69c6a49]
#code(link){{
final TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(model);
final Set<RowFilter<TableModel,Integer>> filters = new HashSet<RowFilter<TableModel,Integer>>(2);
final 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();
  }
};
final 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);
}}

**解説 [#xc758c87]
上記のサンプルは、以下のような複数の行フィルタを、and条件でJTableに適用することができます。
** 解説 [#xc758c87]
上記のサンプルは、以下のような複数の行フィルタを、``and``条件で``JTable``に適用することができます。

-コメントが空でない行のみ表示
-行番号が偶数の場合のみ表示
--行番号はソートされている場合でも、元のモデルのインデックスで判断する
- コメントが空でない行のみ表示
- 行番号が偶数の場合のみ表示
-- 行番号はソートされている場合でも、元のモデルのインデックスで判断する

**参考リンク [#d5eabb84]
-[http://java.sun.com/developer/JDCTechTips/2005/tt1115.html#2 Splash Screens and Java SE 6, and Sorting and Filtering Tables Tech Tips]
-[http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#sorting Sorting and Filtering (How to Use Tables)]
** 参考リンク [#d5eabb84]
- [http://java.sun.com/developer/JDCTechTips/2005/tt1115.html#2 Splash Screens and Java SE 6, and Sorting and Filtering Tables Tech Tips]
- [http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#sorting Sorting and Filtering (How to Use Tables)]

**コメント [#p94b744a]
- 「IndexOutOfBoundsException が発生する…」は、[[TableRowSorterでJTableのソート>Swing/TableRowSorter]]に移動しました。 -- [[aterai]] &new{2011-02-04 (金) 15:19:12};
** コメント [#p94b744a]
- 「``IndexOutOfBoundsException``が発生する…」は、[[TableRowSorterでJTableのソート>Swing/TableRowSorter]]に移動しました。 -- [[aterai]] &new{2011-02-04 (金) 15:19:12};

#comment