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. Будут отображаться только 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— тип модели, к которой применяется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—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— тип модели, к которой применяетсяRowFilterI— тип идентификатора, передаваемого вRowFilter- Параметры:
-
filters—RowFilterдля проверки - Возвращает:
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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/javax/swing/RowFilter.html