Класс RowFilter<M, I>
- Type Parameters:
-
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);
- Since:
- 1.6
- See Also:
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
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- если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- тип модели, к которой применяетсяRowFilter -
I- тип идентификатора, передаваемого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, включающий записи, имеющие хотя бы одно значение Number, соответствующее указанным критериям. Например, следующий фильтр будет включать только записи с хотя бы одним числовым значением, равным 10: RowFilter.numberFilter(ComparisonType.EQUAL, 10);
- Параметры типа:
-
M- тип модели, к которой применяетсяRowFilter -
I- тип идентификатора, передаваемого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- тип модели, к которой применяетсяRowFilter -
I- тип идентификатора, передаваемого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- тип модели, к которой применяетсяRowFilter -
I- тип идентификатора, передаваемогоRowFilter - Параметры:
-
filters- проверяемыеRowFilter - Возвращает:
- объект
RowFilter, реализующий указанные критерии - Использует:
-
IllegalArgumentException- если любой из фильтров являетсяnull -
NullPointerException- еслиfiltersравно null - См. также:
notFilter
public static <M, I> RowFilter<M,I> notFilter(RowFilter<M,I> filter)
RowFilter, включающий записи, если переданный фильтр не включает запись.- Параметры типа:
-
M- тип модели, к которой применяетсяRowFilter -
I- тип идентификатора, передаваемого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, 2023, 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/21/docs/api/java.desktop/javax/swing/RowFilter.html