2010-04-08 63 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