2014-10-02 49 views
0

如何在JXTable中爲1行添加多個過濾器?在JXTable上設置多個RowFilters

我試着使用:

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,只顯示什麼開始w ith A,如果您檢查B和A,則同時顯示...

回答

3

如果要合併多個過濾器,請使用RowFilter.andFilter()RowFilter.orFilter()方法。對於您的情況,這聽起來像你想使用的orFilter方法

步驟:

  • 採取一切要添加到表,並把它們放在一個列表
  • 呼叫RowFilter.andFilter()過濾器或RowFilter.orFilter()來創建單個過濾器,其中AND s或OR是列表中的過濾器。
  • 將新創建的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);