2010-04-08 65 views
2

我試圖根據列過濾行說c1包含布爾值。我只想顯示在c1中有'真'的行。 我查了一下http://java.sun.com/docs/books/tutorial/uiswing/components/table.html#sorting的例子。 該示例使用正則表達式過濾器。有什麼方法可以使用布爾值來過濾行嗎?如何根據布爾值列過濾JTable中的行?

以下是即時通訊使用的代碼(從例如借)

private void filter(boolean show) { 
    RowFilter<TableModel, Object> filter = null; 
    TableModel model = jTb.getModel(); 
    boolean value = (Boolean) model.getValueAt(0,1); 

    //If current expression doesn't parse, don't update. 
    try { 
     // I need to used 'value' to filter instead of filterText. 
     filter =RowFilter.regexFilter(filterText, 0); 
    } catch (java.util.regex.PatternSyntaxException e) { 
     return; 
    } 
    sorter.setRowFilter(filter); 

} 

謝謝。

+0

您應該添加一個java標記。 – 2010-04-08 23:58:57

回答

4

你從the javadoc試過這個例子嗎? (稍微修改)。

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.getValue(i).equals(true)) { 
     return true; 
     } 
    } 
    return false; 
} 
}; 
+0

感謝您的示例。完全按照我想要的方式工作。 – missionE46 2010-04-09 21:55:28

+0

我錯誤地認爲條目是指單元格條目。當我意識到Entry是指整行時,事情變得清晰了! – missionE46 2010-04-09 22:04:13

+0

很高興工作! – 2010-04-10 00:32:40