如何根据布尔值列过滤JTable中的行?

时间:2010-04-08 23:57:47

标签: java jtable filtering rowfilter

我试图根据列过滤行,说c1包含布尔值。我想只显示在c1中有'true'的行。 我查看了http://java.sun.com/docs/books/tutorial/uiswing/components/table.html#sorting中的示例。 该示例使用正则表达式过滤器。有什么办法可以使用布尔值来过滤行吗?

以下是我使用的代码(借用示例)

private void filter(boolean show) {
  RowFilter<TableModel, Object> filter = null;
  TableModel model = jTb.getModel();
  boolean value = (Boolean) model.getValueAt(0,1);

    //If current expression doesn't parse, don't update.
    try {
         // I need to used  'value' to filter instead of filterText.
        filter =RowFilter.regexFilter(filterText, 0);
    } catch (java.util.regex.PatternSyntaxException e) {
        return;
    }
    sorter.setRowFilter(filter);

}
谢谢。

1 个答案:

答案 0 :(得分:4)

您是否从the javadoc尝试了此示例? (略有修改)。

RowFilter<Object,Object> startsWithAFilter = new RowFilter<Object,Object>() {
  public boolean include(Entry<? extends Object, ? extends Object> entry) {
    for (int i = entry.getValueCount() - 1; i >= 0; i--) {
      if (entry.getValue(i).equals(true)) {
       return true;
      }
    }
    return false;
 }
};