|
发表于 2020-9-4 13:45:01
|
显示全部楼层
以下内容来自 jdk 文档
[Quote]
javax.swing.RowFilter<M,I>
RowFilter 用于从模型中过滤条目,使得这些条目不会在视图中显示。例如,一个与 JTable 关联的 RowFilter 可能只允许包含带指定字符串的列的那些行。条目 的含义取决于组件类型。例如,当过滤器与 JTable 关联时,一个条目对应于一行;当过滤器与 JTree 关联时,一个条目对应于一个节点。
子类必须重写 include 方法指示是否应该在视图中显示该条目。Entry 参数可用于获取该条目中每一列的值。下例显示了一个 include 方法,该方法只允许包含以字符串“a”开头的一个或多个值的条目。
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.getStringValue(i).startsWith("a")) {
// The value starts with "a", include it
return true;
}
}
// None of the columns start with "a"; return false so that this
// entry is not shown
return false;
}
};
RowFilter 有两个形式类型参数,可用来为特定模型创建 RowFilter。例如,以下代码假定一个包装 Person 类型对象的特定模型。只显示年龄大于 20 的 Person:
RowFilter<PersonModel,Integer> ageFilter = new RowFilter<PersonModel,Integer>() {
public boolean include(Entry<? extends PersonModel, ? extends Integer> entry) {
PersonModel personModel = entry.getModel();
Person person = personModel.getPerson(entry.getIdentifier());
if (person.getAge() > 20) {
// Returning true indicates this row should be shown.
return true;
}
// Age is <= 20, don't show it.
return false;
}
};
PersonModel model = createPersonModel();
TableRowSorter<PersonModel> sorter = new TableRowSorter<PersonModel>(model);
sorter.setRowFilter(ageFilter);
从以下版本开始:
1.6[/Quote] |
|