在JXTable上设置多个RowFilters

时间:2014-10-02 15:56:12

标签: java filter swingx rowfilter jxtable

如何在JXTable中为1行添加多个过滤器?

我尝试使用:

int col = jxTable.getColumn("Tipo").getModelIndex();
RowFilter filter1 = RowFilters.regexFilter(0, "^N", col)
RowFilter filter2 = RowFilters.regexFilter(0, "^N", col)

jxTable.setRowFilter(filter1);
jxTable.setRowFilter(filter2);

filter2会覆盖filter1

用法:

我将使用不同的字母进行3个复选框来过滤,

[ ]A  [ ]B  [ ]C

如果你检查A,只显示以A开头的内容,如果你检查B和A,则显示两个......

1 个答案:

答案 0 :(得分:3)

如果要组合多个过滤器,请使用RowFilter.andFilter()RowFilter.orFilter()方法。对于您的情况,听起来您想要使用orFilter方法

<强>步骤:

  • 将要添加到表中的所有过滤器放入列表中
  • 致电RowFilter.andFilter()RowFilter.orFilter(),创建一个ANDOR列表中过滤条件的过滤条件。
  • 将新创建的ANDOR过滤器应用于JXTable。

示例:

//Code not tested
int col = jxTable.getColumn("Tipo").getModelIndex();
RowFilter filter1 = RowFilters.regexFilter(0, "^N", col)
RowFilter filter2 = RowFilters.regexFilter(0, "^N", col)

List<RowFilter> filters = new ArrayList<RowFilter>();
filters.add(filter1);
filters.add(filter2)
RowFilter orFilter = RowFilter.orFilter(filters);
jxTable.setRowFilter(orFilter);