簡體   English   中英

Java Swing:將RowFilter.andFilter與RowFilter.orFilter組合

[英]Java Swing: Combine RowFilter.andFilter with RowFilter.orFilter

我不能完全使它起作用,我發現的示例僅適用於單個RowFilter.andFilter或RowFilter.orFilter。 有沒有一種方法可以將兩者結合起來得到(A || B)&&(C || D)? 以下是我正在嘗試的一些示例代碼。

ArrayList<RowFilter<Object,Object>> arrLstColorFilters = new ArrayList<RowFilter<Object,Object>>();
ArrayList<RowFilter<Object,Object>> arrLstCandyFilters = new ArrayList<RowFilter<Object,Object>>();
RowFilter<Object,Object> colorFilter;
RowFilter<Object,Object> candyFilter;
TableRowSorter<TableModel> sorter;

// OR colors
RowFilter<Object,Object> blueFilter = RowFilter.regexFilter("Blue", myTable.getColumnModel().getColumnIndex("Color"));
RowFilter<Object,Object> redFilter = RowFilter.regexFilter("Red", myTable.getColumnModel().getColumnIndex("Color"));
arrLstColorFilters.add(redFilter);
arrLstColorFilters.add(blueFilter);
colorFilter = RowFilter.orFilter(arrLstColorFilters);

// OR candies
RowFilter<Object,Object> mAndMFilter = RowFilter.regexFilter("M&M", myTable.getColumnModel().getColumnIndex("Candy"));
RowFilter<Object,Object> mentosFilter = RowFilter.regexFilter("Mentos", myTable.getColumnModel().getColumnIndex("Candy"));
arrLstCandyFilters.add(mAndMFilter);
arrLstCandyFilters.add(mentosFilter);
candyFilter = RowFilter.orFilter(arrLstCandyFilters);

// Mentos and M&Ms that are red or blue (this is where I'm stuck)
sorter.setRowFilter(RowFilter.andFilter(candyFilter, colorFilter);  //this does not work

如果有人可以為我在最后一行中嘗試做的事情提供有效的摘錄,將不勝感激。 當前維護兩個單獨的表模型來避免此問題,我想避免重復數據。

謝謝,凱

您的最后一行甚至沒有編譯,因為andFilter還需要一個列表而不是單獨的參數。

否則,您的示例似乎可以在我的測試中找到。 我用以下代碼替換了示例中的最后一行:

ArrayList<RowFilter<Object, Object>> andFilters = new ArrayList<RowFilter<Object, Object>>();
andFilters.add(candyFilter);
andFilters.add(colorFilter);

sorter = new TableRowSorter<TableModel>(myTable.getModel());

// Mentos and M&Ms that are red or blue
sorter.setRowFilter(RowFilter.andFilter(andFilters));

myTable.setRowSorter(sorter);

請確保使用適當的表模型初始化TableRowSorter。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM