2017-09-01 70 views
0

我有一個行篩選器,但我需要加載的一切,但值...JTable的行排序 - 過濾器管理

例子:

col1 | col2 
----------- 
1 | N 
2 | Y 
3 | O 

我需要什麼:

col1 | col2 
----------- 
1 | N 
3 | O 

我有:

RowFilter<TableModel, Object> firstFiler = null; 
List<RowFilter<TableModel, Object>> filters = new 
ArrayList<RowFilter<TableModel, Object>>(); 
RowFilter<TableModel, Object> compoundRowFilter = null; 
try { 
    firstFiler = RowFilter.regexFilter("(?i)" + text, 1); 
    filters.add(firstFiler); 
    compoundRowFilter = RowFilter.andFilter(filters); 
} catch (java.util.regex.PatternSyntaxException e) { 
    return; 
} 
sorter.setRowFilter(compoundRowFilter); 

回答

1

請參閱例如在JavaDoc:

https://docs.oracle.com/javase/8/docs/api/javax/swing/RowFilter.html

從上面的JavaDoc鏈路下面的示例示出了包括方法,其允許啓動與字符串「a」含有一個或多個值僅條目:

RowFilter<Object,Object> startsWithAFilter = new RowFilter<Object,Object>() { 
    public boolean include(Entry<? extends Object, ? extends Object> entry) { 
    for (int i = entry.getValueCount() - 1; i >= 0; i--){    
     if(entry.getStringValue(i).startsWith("a")) { 
     // The value starts with "a", include it 
     return true; 
     } 
    } 
    // None of the columns start with "a"; return false so that this 
    // entry is not shown 
    return false; 
    } 
}; 

你可以修改上面的例子來代替除「2」之外的所有內容。

我推薦閱讀該JavaDoc鏈接的摘要以更好地理解它是如何工作的。