Класс RowFilter<M, I>
- Параметры типа:
M- тип модели; напримерPersonModelI- тип идентификатора; при использованииTableRowSorter, он будетInteger
public abstract class RowFilter<M,I> extends Object
RowFilter используется для фильтрации записей из модели, чтобы они не отображались в представлении. Например, RowFilter, связанный с JTable, может разрешать только строки, содержащие столбец со строкой, соответствующей определённому шаблону. Значение «записи» зависит от типа компонента. Например, когда фильтр связан с 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. Будут отображаться только объекты Person с возрастом более 20 лет:
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
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static enum |
RowFilter.ComparisonType |
Перечисление возможных значений сравнения, поддерживаемых некоторыми из стандартных RowFilter. |
static class |
RowFilter.Entry<M, |
Объект Entry передаётся экземплярам RowFilter, позволяя фильтру получить значение данных записи и, таким образом, определить, должна ли запись отображаться. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Конструктор для вызова подклассами. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static <M, |
andFilter |
Возвращает RowFilter, который включает записи, если все предоставленные фильтры включают запись. |
static <M, |
dateFilter |
Возвращает RowFilter, который включает записи, у которых есть хотя бы одно значение Date, удовлетворяющее заданным критериям. |
abstract boolean |
include |
Возвращает true, если указанная запись должна отображаться; возвращает false, если запись должна быть скрыта. |
static <M, |
notFilter |
Возвращает RowFilter, который включает записи, если предоставленный фильтр не включает запись. |
static <M, |
numberFilter |
Возвращает RowFilter, который включает записи, у которых есть хотя бы одно значение Number, удовлетворяющее заданным критериям. |
static <M, |
orFilter |
Возвращает RowFilter, который включает записи, если любая из предоставленных фильтров включает запись. |
static <M, |
regexFilter |
Возвращает RowFilter, который использует регулярное выражение для определения включения записей. |
Подробное описание конструкторов
RowFilter
protected RowFilter()
Подробное описание методов
regexFilter
public static <M,I> RowFilter<M,I> regexFilter(String regex, int... indices)
RowFilter, который использует регулярное выражение для определения, какие записи включать. Включаются только записи с хотя бы одним соответствующим значением. Например, следующее создаёт RowFilter, включающий записи с хотя бы одним значением, начинающимся с "a":
RowFilter.regexFilter("^a");
Возвращаемый фильтр использует Matcher.find() для проверки включения. Для проверки точного соответствия используйте символы '^' и '$' для сопоставления начала и конца строки соответственно. Например, "^foo$" включает только строки, которые точно равны "foo", а не, например, "food". См. Pattern для полного описания поддерживаемых конструкций регулярных выражений.
- Параметры типа:
M— тип модели, к которой относитсяRowFilterI— тип идентификатора, передаваемого вRowFilter- Параметры:
-
regex— регулярное выражение для фильтрации -
indices— индексы значений для проверки. Если не указаны, оцениваются все значения - Возвращает:
RowFilter, реализующий указанные критерии- Исключения:
-
NullPointerException— еслиregexимеет значениеnull -
IllegalArgumentException— если какой-либо изindicesимеет значение < 0 -
PatternSyntaxException— еслиregexне является допустимым регулярным выражением. - См. также:
dateFilter
public static <M,I> RowFilter<M,I> dateFilter(RowFilter.ComparisonType type, Date date, int... indices)
RowFilter, включающий записи, у которых есть хотя бы одно значение Date, соответствующее указанным критериям. Например, следующее RowFilter включает только записи с хотя бы одной датой после текущей: RowFilter.dateFilter(ComparisonType.AFTER, new Date());
- Параметры типа:
M— тип модели, к которой относитсяRowFilterI— тип идентификатора, передаваемого вRowFilter- Параметры:
-
type— тип сравнения -
date— дата для сравнения -
indices— индексы значений для проверки. Если не указаны, оцениваются все значения - Возвращает:
RowFilter, реализующий указанные критерии- Исключения:
-
NullPointerException— еслиdateимеет значениеnull -
IllegalArgumentException— если какой-либо изindicesимеет значение < 0 илиtypeимеет значениеnull - См. также:
numberFilter
public static <M,I> RowFilter<M,I> numberFilter(RowFilter.ComparisonType type, Number number, int... indices)
RowFilter, включающий записи, у которых есть хотя бы одно числовое значение, соответствующее указанным критериям. Например, следующий фильтр будет включать только записи с хотя бы одним числовым значением, равным 10: RowFilter.numberFilter(ComparisonType.EQUAL, 10);
- Параметры типа:
M— тип модели, к которой относитсяRowFilterI— тип идентификатора, передаваемого вRowFilter- Параметры:
-
type— тип сравнения -
number— значениеNumberдля сравнения -
indices— индексы значений для проверки. Если не указаны, оцениваются все значения - Возвращает:
RowFilter, реализующий указанные критерии- Исключения:
-
IllegalArgumentException— если какой-либо изindicesимеет значение < 0,typeимеет значениеnullилиnumberимеет значениеnull
orFilter
public static <M,I> RowFilter<M,I> orFilter(Iterable<? extends RowFilter<? super M, ? super I>> filters)
RowFilter, включающий записи, если любая из переданных фильтров включает запись. Следующий пример создаёт RowFilter, который будет включать любые записи, содержащие строку "foo" или строку "bar":
List<RowFilter<Object,Object>> filters = new ArrayList<RowFilter<Object,Object>>(2);
filters.add(RowFilter.regexFilter("foo"));
filters.add(RowFilter.regexFilter("bar"));
RowFilter<Object,Object> fooBarFilter = RowFilter.orFilter(filters);
- Параметры типа:
M— тип модели, к которой относитсяRowFilterI— тип идентификатора, передаваемого вRowFilter- Параметры:
-
filters— проверяемыеRowFilter - Возвращает:
RowFilter, реализующий указанные критерии- Исключения:
-
IllegalArgumentException— если любой из фильтров имеет значениеnull -
NullPointerException— еслиfiltersимеет значение null - См. также:
andFilter
public static <M,I> RowFilter<M,I> andFilter(Iterable<? extends RowFilter<? super M, ? super I>> filters)
RowFilter, включающий записи, если все переданные фильтры включают запись. Следующий пример создаёт RowFilter, который будет включать любые записи, содержащие строку "foo" и строку "bar":
List<RowFilter<Object,Object>> filters = new ArrayList<RowFilter<Object,Object>>(2);
filters.add(RowFilter.regexFilter("foo"));
filters.add(RowFilter.regexFilter("bar"));
RowFilter<Object,Object> fooBarFilter = RowFilter.andFilter(filters);
- Параметры типа:
M— тип модели, к которой относитсяRowFilterI— тип идентификатора, передаваемого вRowFilter- Параметры:
-
filters— проверяемыеRowFilter - Возвращает:
RowFilter, реализующий указанные критерии- Исключения:
-
IllegalArgumentException— если любой из фильтров имеет значениеnull -
NullPointerException— еслиfiltersимеет значение null - См. также:
notFilter
public static <M,I> RowFilter<M,I> notFilter(RowFilter<M,I> filter)
RowFilter, который включает записи, если переданный фильтр не включает запись.- Параметры типа:
M— тип модели, к которой относитсяRowFilterI— тип идентификатора, передаваемого вRowFilter- Параметры:
-
filter— отменяемыйRowFilter - Возвращает:
RowFilter, реализующий указанные критерии- Исключения:
-
IllegalArgumentException— еслиfilterимеет значениеnull
include
public abstract boolean include(RowFilter.Entry<? extends M, ? extends I> entry)
Аргумент entry действителен только на время вызова. Использование entry после возврата вызова приводит к неопределённому поведению.
- Параметры:
-
entry— объект, не являющийсяnull, оборачивающий подлежащий объект из модели - Возвращает:
- true, если запись должна быть показана
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://download.java.net/java/early_access/jdk24/docs/api/java.desktop/javax/swing/RowFilter.html