1

我能够将过滤器附加到 GraphTable(从 JTable 扩展而来)。我正在尝试一个示例过滤器,它过滤所有以字母“A”开头的行。

final GraphTable<Composite, ?> leftTable =
        (GraphTable<Composite, ?>) newMapPanel.getLeft();
final RowSorter<TableModel> sorter =
        new TableRowSorter<TableModel>(((JTable)leftTable).getModel());

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) != null)
          {
              if (entry.getValue(i).toString().startsWith("A")) {
                // The value starts with "A", so do not include it, filter it.
                return false;
              }
          }
      }
      // None of the columns start with "a"; return true so that this
      // entry is shown
      return true;
   }
};

((DefaultRowSorter<TableModel, Integer>) sorter).setRowFilter(startsWithAFilter);
((JTable)leftTable).setRowSorter(sorter); 
((JTable)leftTable).updateUI();

include 方法对所有以“A”开头的条目返回 false,对其他条目返回 true。

但此更新并未反映在表中。也((JTable)leftTable).updateUI()没有((JTable)leftTable).revalidate()更新表格。我相信这会从视图中过滤这些行。我应该怎么做才能使更改立即反映在视图中。

请给我任何指示或建议?

4

0 回答 0