JTable行分拣机 - 过滤器管理

时间:2017-09-01 00:55:55

标签: java jtable rowfilter

我有一个行过滤器,但我需要加载除了值之外的所有内容......

示例:

col1 | col2
-----------
1    | N
2    | Y
3    | O

我需要什么:

col1 | col2
-----------
1    | N
3    | O

我有什么:

RowFilter<TableModel, Object> firstFiler = null;
List<RowFilter<TableModel, Object>> filters = new 
ArrayList<RowFilter<TableModel, Object>>();
RowFilter<TableModel, Object> compoundRowFilter = null;
try {
    firstFiler = RowFilter.regexFilter("(?i)" + text, 1);
    filters.add(firstFiler);
    compoundRowFilter = RowFilter.andFilter(filters);
} catch (java.util.regex.PatternSyntaxException e) {
     return;
}
sorter.setRowFilter(compoundRowFilter);

1 个答案:

答案 0 :(得分:2)

请参阅JavaDoc中的示例:

https://docs.oracle.com/javase/8/docs/api/javax/swing/RowFilter.html

上面的JavaDoc链接中的以下示例显示了一个include方法,该方法仅允许包含一个或多个以字符串“a”开头的值的条目:

 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.getStringValue(i).startsWith("a")) {
         // The value starts with "a", include it
         return true;
       }
     }
     // None of the columns start with "a"; return false so that this
     // entry is not shown
     return false;
   }
 };

您可以修改上面的示例,而不是包含“2”以外的所有内容。

我建议阅读该JavaDoc链接的摘要,以便更好地了解它的工作原理。