Class 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. Будут отображаться только Persons, возраст которых превышает 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, использующий регулярное выражение для определения включаемых записей. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли другой объект этому объекту. |
protected void |
finalize() |
Устарело, планируется удаление: этот элемент API может быть удален в будущей версии. Финализация объявлена устаревшей и может быть удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Приостанавливает текущий поток до его пробуждения, обычно вследствие вызова метода notify или interrupt. |
final void |
wait |
Приостанавливает текущий поток до его пробуждения, обычно вследствие вызова метода notify или interrupt, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Приостанавливает текущий поток до его пробуждения, обычно вследствие вызова метода notify или interrupt, либо до истечения заданного промежутка реального времени. |
Подробное описание конструкторов
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, включающий записи, имеющие хотя бы одно значение Number, соответствующее указанным критериям. Например, следующий фильтр включает только записи, содержащие хотя бы одно числовое значение, равное 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- проверяемыеRowFilters - Возвращает:
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- проверяемыеRowFilters - Возвращает:
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.