Класс RowFilter<M, I>
- Параметры типа:
-
M- тип модели; напримерPersonModel -
I- тип идентификатора; при использовании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- тип модели, к которой применяетсяRowFilter -
I- тип идентификатора, передаваемогоRowFilter - Параметры:
-
regex- регулярное выражение для фильтрации -
indices- индексы значений для проверки. Если не указаны, оцениваются все значения - Возвращает:
RowFilter, реализующий указанные критерии- Исключения:
-
NullPointerException- еслиregexnull -
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- тип модели, к которой применяетсяRowFilter -
I- тип идентификатора, передаваемогоRowFilter - Параметры:
-
type- тип сравнения -
date- дата для сравнения -
indices- индексы значений для проверки. Если не указаны, оцениваются все значения - Возвращает:
RowFilter, реализующий указанные критерии- Исключения:
-
NullPointerException- еслиdatenull -
IllegalArgumentException- если любой изindicesменьше 0 илиtypenull - См. также:
numberFilter
public static <M, I> RowFilter<M,I> numberFilter(RowFilter.ComparisonType type, Number number, int... indices)
RowFilter, включающий строки, содержащие хотя бы одно числовое значение, соответствующее указанным критериям. Например, следующий фильтр будет включать только строки с числовым значением, равным 10: RowFilter.numberFilter(ComparisonType.EQUAL, 10);
- Параметры типа:
-
M- тип модели, к которой применяетсяRowFilter -
I- тип идентификатора, передаваемогоRowFilter - Параметры:
-
type- тип сравнения -
number- числовое значение для сравнения -
indices- индексы значений для проверки. Если не указаны, оцениваются все значения - Возвращает:
RowFilter, реализующий указанные критерии- Исключения:
-
IllegalArgumentException- если любой изindicesменьше 0,typenullилиnumbernull
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- тип модели, к которой применяетсяRowFilter -
I- тип идентификатора, передаваемогоRowFilter - Параметры:
-
filters- фильтры для проверки - Возвращает:
RowFilter, реализующий указанные критерии- Исключения:
-
IllegalArgumentException- если любой из фильтровnull -
NullPointerException- еслиfiltersnull - См. также:
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- тип модели, к которой применяетсяRowFilter -
I- тип идентификатора, передаваемогоRowFilter - Параметры:
-
filters- фильтры для проверки - Возвращает:
RowFilter, реализующий указанные критерии- Исключения:
-
IllegalArgumentException- если любой из фильтровnull -
NullPointerException- еслиfiltersnull - См. также:
notFilter
public static <M, I> RowFilter<M,I> notFilter(RowFilter<M,I> filter)
RowFilter, включающий строки, если указанный фильтр не включает строку.- Параметры типа:
-
M- тип модели, к которой применяетсяRowFilter -
I- тип идентификатора, передаваемогоRowFilter - Параметры:
-
filter- фильтр для инвертирования - Возвращает:
RowFilter, реализующий указанные критерии- Исключения:
-
IllegalArgumentException- еслиfilternull
include
public abstract boolean include(RowFilter.Entry<? extends M,? extends I> entry)
Аргумент entry действителен только в течение вызова. Использование entry после возврата вызова приводит к неопределённому поведению.
- Параметры:
-
entry- объект, обертывающий базовый объект из модели - Возвращает:
- true, если строка должна быть отображена
© 1993, 2021, 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://docs.oracle.com/en/java/javase/17/docs/api/java.desktop/javax/swing/RowFilter.html