【问题标题】:JTable row sorter - filter manageJTable 行排序器 - 过滤器管理
【发布时间】:2023-04-09 04:26:01
【问题描述】:

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

例子:

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);

【问题讨论】:

    标签: java jtable rowfilter


    【解决方案1】:

    参见 JavaDoc 中的示例:

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

    来自上述 JavaDoc 链接的以下示例显示了一个包含方法,该方法只允许包含一个或多个以字符串“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 链接的摘要,以更好地了解其工作原理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-13
      • 2011-11-27
      • 2011-01-31
      • 2013-07-26
      • 2020-09-15
      • 2013-08-04
      • 1970-01-01
      相关资源
      最近更新 更多