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()
更新されません。これにより、ビューからこれらの行がフィルター処理されると思います。変更がすぐにビューに反映されるようにするにはどうすればよいですか。
親切に指示や提案を教えてください。