0

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

我尝试使用:

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,则同时显示...

4

1 回答 1

4

当您想组合多个过滤器时,请使用RowFilter.andFilter()or方法。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);
于 2014-10-02T16:22:17.710 回答