#navi(../)
*JTableに行フィルターで表示の切り替え [#defef215]
>編集者:[[Terai Atsuhiro>terai]]~
作成日:2005-01-31~
更新日:&lastmod;

#contents

**概要 [#p22a4681]
JTableに表示する行をフィルタを使用して切り替えます。

#screenshot

**サンプルコード [#gf3186d0]
 class TestModel extends DefaultTableModel {
   public static final String NUMBER  = "番号";
   public static final String MASTER  = "名前";
   public static final String COMMENT = "コメント";
   private final Vector list = new Vector();
   public TestModel() {
     super(new String[]{NUMBER, MASTER, COMMENT}, 0);
   }
   public void addRow(Test tst) {
     list.add(tst);
     Integer num = new Integer(list.size());
     Object[] obj = {num, tst.getName(), tst.getComment()};
     addRow(obj);
   }
   public void filterRows(boolean flg) {
     //Vector v = new Vector(list.size());
     dataVector.clear();
     for(int i=0;i<list.size();i++) {
       if(flg && !(i%2==0)) continue;
       Test t = (Test)list.elementAt(i);
       Object[] o = new Object[] {
         new Integer(i+1),
         t.getName(),
         t.getComment()
       };
       //v.add(convertToVector(o));
       dataVector.add(convertToVector(o));
     }
     //setDataVector(v, columnIdentifiers);
     fireTableDataChanged();
   }
 }

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

**解説 [#j7d85e1f]
上記のサンプルでは、DefaultTableModelのフィールドにあるdataVectorを表示用に使用し、これとは別にすべての行を保持するVectorを作成しています。例えば、奇数行だけ表示するという条件が選択された場合、この条件に適合する行だけを保持用Vectorから表示用のdataVectorにコピーすることでフィルタリングを行っています。

//**参考リンク
**コメント [#edc470ff]
#comment