4

我想根据两个不同列的值在 JTable 中实现行过滤:

列 1 = 1

列 2 = 5

这是基于 INDEX_FIELD = 1 条件执行行过滤的方法:

    public void rowFiltering(int x) {
    RowFilter<ResultsModel, Integer> IDfilter = RowFilter.numberFilter(
            ComparisonType.EQUAL, x, column1);
    resultsTableSorter.setRowFilter(IDfilter);
}

rowFiltering(1);

如何实现基于两个值的行过滤?就像是...

rowFiltering(valueColumn1, valueColumn2);
4

2 回答 2

9

使用and过滤器:

//rf = RowFilter.regexFilter(filterText.getText(), 0);
List<RowFilter<Object,Object>> filters = new ArrayList<RowFilter<Object,Object>>(2);
filters.add(RowFilter.regexFilter(filterText.getText(), 0));
filters.add(RowFilter.regexFilter(filterText.getText(), 1));
rf = RowFilter.andFilter(filters);

上面的代码是根据Sorting and Filtering中的示例修改的。

于 2013-07-03T15:04:22.093 回答
2

根据@camickr 解决方案,这是我自己的问题的代码。

public void filterRowsResults(int x1, int x2) {

    List<RowFilter<ResultsModel, Integer>> filters = new ArrayList<RowFilter<ResultsModel, Integer>>(2);
    RowFilter<ResultsModel, Integer> filterC1 = RowFilter.numberFilter(ComparisonType.EQUAL, x1, 1);
    RowFilter<ResultsModel, Integer> filterC2 = RowFilter.numberFilter(ComparisonType.EQUAL, x2, 2);
    filters.add(filterC1);
    filters.add(filterC2);
    RowFilter<ResultsModel, Integer> filter = RowFilter.andFilter(filters);
    resultsTableSorter.setRowFilter(filter);
}

所以我可以按如下方式调用该方法:

filterRowsResults(valueC1, valueC2);
于 2013-07-03T15:38:58.297 回答