goo blog サービス終了のお知らせ 

開発頭-kenken

写真付きで日記や趣味を書くならgooブログ

最近node.jsが気になってきました。

JavaのJTableで複数列のフィルタリング

2010-02-28 14:22:17 | Java
今回は、複数列のフィルタに挑戦!

/**
* テーブルフィルタセット・メソット
* テーブルにフィルタをセットする。
* @param  myTable フィルタをかけるテーブル
* @return  boolean 結果
*/
public  boolean setTableFilter(javax.swing.JTable myTable)  {

  TableRowSorter<TableModel> rowSorter = new TableRowSorter<TableModel>(myTable.getModel());
  myTable.setRowSorter(rowSorter);
  List<RowFilter filters = new ArrayList<RowFilter();
  int colDate = myTable.getColumn("確認日").getModelIndex();
  int colMember = myTable.getColumn("担当者").getModelIndex();
  
  String filterVal = "/";
  
  //----- ラジオボタン
  //  全部
  if  (readModeGroup.getSelection().getActionCommand().equals("0"))  {
    filters.clear();

    //  未
  }  else if (readModeGroup.getSelection().getActionCommand().equals("1"))  {
    filters.add(RowFilter.notFilter(RowFilter.regexFilter(filterVal, colDate)));
    
    
    //  済
  }  else if (readModeGroup.getSelection().getActionCommand().equals("2"))  {
    filters.add(RowFilter.regexFilter(filterVal, colDate));
  }
  
  //----- コンボボックス
  if  (jComboTakeMember.getSelectedIndex() > 0)  {
    String cVal = jComboTakeMember.getSelectedItem().toString();
    filters.add(RowFilter.regexFilter(cVal, colMember));
  }
  RowFilter<Object,Object> fooBarFilter = RowFilter.andFilter(filters);
  rowSorter.setRowFilter(fooBarFilter);
  myTable.setRowSorter(rowSorter);

  // フィルタ後の件数をラベルにセット
  jLabelDataCnt.setText(String.valueOf(jTableChkModel.getRowCount()));
  return  true;
}