Класс RowFilter<M,I>
- java.lang.Object
-
- javax.swing.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
- См. также:
TableRowSorter
Вложенные классы
| Модификатор и тип | Класс | Описание |
|---|---|---|
static class | RowFilter.ComparisonType | Перечисление возможных значений сравнения, поддерживаемых некоторыми из стандартных |
static class | RowFilter.Entry<M,I> | Объект |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
RowFilter() |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static <M,I> | andFilter(Iterable<? extends RowFilter<? super M,? super I>> filters) | Возвращает |
static <M,I> | dateFilter(RowFilter.ComparisonType type,
Date date,
int... indices) | Возвращает |
abstract boolean | include(RowFilter.Entry<? extends M,? extends I> entry) | Возвращает true, если указанная запись должна отображаться; возвращает false, если запись должна быть скрыта. |
static <M,I> | notFilter(RowFilter<M,I> filter) | Возвращает |
static <M,I> | numberFilter(RowFilter.ComparisonType type,
Number number,
int... indices) | Возвращает |
static <M,I> | orFilter(Iterable<? extends RowFilter<? super M,? super I>> filters) | Возвращает |
static <M,I> | regexFilter(String regex,
int... indices) | Возвращает |
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Конструкторы
RowFilter
public 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.
- Type Parameters:
-
M- тип модели, к которой относитсяRowFilter -
I- тип идентификатора, передаваемого вRowFilter - Параметры:
-
regex- регулярное выражение для фильтрации -
indices- индексы значений для проверки. Если не указаны, оцениваются все значения - Возвращаемое значение:
- объект
RowFilter, реализующий заданные критерии - Исключения:
-
NullPointerException- еслиregexявляетсяnull -
IllegalArgumentException- если какой-либо изindicesменьше 0 -
PatternSyntaxException- еслиregexне является корректным регулярным выражением. - См. также:
Pattern
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());
- Type Parameters:
-
M- тип модели, к которой относитсяRowFilter -
I- тип идентификатора, передаваемого вRowFilter - Параметры:
-
type- тип сравнения -
date- дата для сравнения -
indices- индексы значений для проверки. Если не указаны, оцениваются все значения - Возвращаемое значение:
- объект
RowFilter, реализующий заданные критерии - Исключения:
-
NullPointerException- еслиdateявляетсяnull -
IllegalArgumentException- если какой-либо изindicesменьше 0 илиtypeявляетсяnull - См. также:
-
Calendar,Date
numberFilter
public static <M,I> RowFilter<M,I> numberFilter(RowFilter.ComparisonType type,
Number number,
int... indices) Возвращает RowFilter, включающий записи, у которых хотя бы одно значение Number соответствует заданным критериям. Например, следующий фильтр будет включать только записи с хотя бы одним числовым значением, равным 10:
RowFilter.numberFilter(ComparisonType.EQUAL, 10);
- Type Parameters:
-
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);
- Type Parameters:
-
M- тип модели, к которой относитсяRowFilter -
I- тип идентификатора, передаваемого вRowFilter - Параметры:
-
filters- проверяемыеRowFilter - Возвращаемое значение:
- объект
RowFilter, реализующий заданные критерии - Исключения:
-
IllegalArgumentException- если любой из фильтров являетсяnull -
NullPointerException- еслиfiltersравно null - См. также:
Arrays.asList(T...)
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);
- Type Parameters:
-
M- тип модели, к которой относитсяRowFilter -
I- тип идентификатора, передаваемого вRowFilter - Параметры:
-
filters- проверяемыеRowFilter - Возвращаемое значение:
- объект
RowFilter, реализующий заданные критерии - Исключения:
-
IllegalArgumentException- если любой из фильтров являетсяnull -
NullPointerException- еслиfiltersравно null - См. также:
Arrays.asList(T...)
notFilter
public static <M,I> RowFilter<M,I> notFilter(RowFilter<M,I> filter)
Возвращает RowFilter, включающий записи, если переданный фильтр не включает запись.
- Type Parameters:
-
M- тип модели, к которой относитсяRowFilter -
I- тип идентификатора, передаваемого вRowFilter - Параметры:
-
filter-RowFilterдля инвертирования - Возвращаемое значение:
- объект
RowFilter, реализующий заданные критерии - Исключения:
-
IllegalArgumentException- еслиfilterявляетсяnull
include
public abstract boolean include(RowFilter.Entry<? extends M,? extends I> entry)
Возвращает true, если указанная запись должна быть отображена; возвращает false, если запись должна быть скрыта.
Аргумент entry действителен только в течение вызова. Использование entry после возврата вызова приводит к неопределённому поведению.
- Параметры:
-
entry- объект, не являющийсяnull, который оборачивает базовый объект из модели - Возвращаемое значение:
- true, если запись должна быть отображена
© 1993, 2020, 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/11/docs/api/java.desktop/javax/swing/RowFilter.html