使用RowFilter后更新JTable

时间:2010-11-02 12:27:14

标签: java jtable rowfilter tablerowsorter

我能够将过滤器附加到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()都没有更新表格。我相信这过滤那些 视图中的行。我该怎么做才能使更改立即反映在视图中。

请给我任何指示或建议?

0 个答案:

没有答案