【问题标题】:How to filter rows in JTable based on boolean valued columns?如何根据布尔值列过滤 JTable 中的行?
【发布时间】:2011-02-05 22:47:02
【问题描述】:

我试图根据包含布尔值的列 c1 过滤行。我只想显示 c1 中具有“真”的行。 我在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);

}

谢谢。

【问题讨论】:

    标签: java jtable filtering rowfilter


    【解决方案1】:

    您是否尝试过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;
     }
    };
    

    【讨论】:

    • 感谢您的示例。完全按照我想要的方式工作。
    • 我错误地认为 Entry 是指单元格条目。当我意识到 Entry 指的是一整行时,事情就变得清晰了!
    猜你喜欢
    • 2013-09-11
    • 2013-10-26
    • 1970-01-01
    • 1970-01-01
    • 2022-08-17
    • 2020-05-15
    • 1970-01-01
    • 2016-09-14
    • 1970-01-01
    相关资源
    最近更新 更多