Класс 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> RowFilter<M,I> |
andFilter(Iterable<? extends RowFilter<? super M,? super I>> filters) Возвращает |
static <M,I> RowFilter<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> RowFilter<M,I> |
notFilter(RowFilter<M,I> filter) Возвращает |
static <M,I> RowFilter<M,I> |
numberFilter(RowFilter.ComparisonType type,
Number number,
int... indices) Возвращает |
static <M,I> RowFilter<M,I> |
orFilter(Iterable<? extends RowFilter<? super M,? super I>> filters) Возвращает |
static <M,I> RowFilter<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 для полного описания поддерживаемых конструкций регулярных выражений.
- Параметры:
-
regex- регулярное выражение для фильтрации -
indices- индексы значений для проверки. Если не указаны, оцениваются все значения - Возвращает:
RowFilterреализующий заданные критерии- Исключения:
-
NullPointerException- еслиregexnull -
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- тип сравнения для выполнения -
date- дата для сравнения -
indices- индексы значений для проверки. Если не указаны, оцениваются все значения - Возвращает:
RowFilterреализующий заданные критерии- Исключения:
-
NullPointerException- еслиdatenull -
IllegalArgumentException- если любой изindicesменьше 0 илиtypenull - См. также:
-
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- тип сравнения для выполнения -
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);
- Параметры:
-
filters-RowFilterдля проверки - Возвращает:
RowFilterреализующий заданные критерии- Исключения:
-
IllegalArgumentException- если любой из фильтровnull -
NullPointerException- еслиfiltersnull - См. также:
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);
- Параметры:
-
filters-RowFilterдля проверки - Возвращает:
RowFilterреализующий заданные критерии- Исключения:
-
IllegalArgumentException- если любой из фильтровnull -
NullPointerException- еслиfiltersnull - См. также:
Arrays.asList(T...)
notFilter
public static <M,I> RowFilter<M,I> notFilter(RowFilter<M,I> filter)
Возвращает RowFilter, который включает записи, если предоставленный фильтр не включает запись.
- Параметры:
-
filter-RowFilterдля инверсии - Возвращает:
RowFilterреализующий заданные критерии- Исключения:
-
IllegalArgumentException- еслиfilternull
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.