Как отфильтровать строки в JTable на основе столбцов с логическими значениями? - PullRequest
2 голосов
/ 09 апреля 2010

Я пытаюсь отфильтровать строки по столбцу, скажем, c1, который содержит логические значения. Я хочу показать только те строки, которые имеют «true» в c1. Я посмотрел примеры в http://java.sun.com/docs/books/tutorial/uiswing/components/table.html#sorting. В примере используется фильтр регулярных выражений. Есть ли способ использовать логические значения для фильтрации строк?

Ниже приведен код, который я использую (заимствовано из примера)

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);

}

спасибо.

1 Ответ

4 голосов
/ 09 апреля 2010

Вы пробовали этот пример из 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;
 }
};
...