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