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