Spec-Zone.ru › OpenJDK 24

Класс 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 enum  RowFilter.ComparisonType
Перечисление возможных значений сравнения, поддерживаемых некоторыми из стандартных RowFilter.
static class  RowFilter.Entry<M,I>
Объект Entry передаётся экземплярам RowFilter, позволяя фильтру получить значение данных записи и, таким образом, определить, должна ли запись отображаться.

Краткое описание конструкторов

RowFilter()
Модификатор Конструктор Описание
protected
Конструктор для вызова подклассами.

Краткое описание методов

Модификатор и тип Метод Описание
static <M,I> RowFilter<M,I> andFilter(Iterable<? extends RowFilter<? super M, ? super I>> filters)
Возвращает RowFilter, который включает записи, если все предоставленные фильтры включают запись.
static <M,I> RowFilter<M,I> dateFilter(RowFilter.ComparisonType type, Date date, int... indices)
Возвращает RowFilter, который включает записи, у которых есть хотя бы одно значение Date, удовлетворяющее заданным критериям.
abstract boolean include(RowFilter.Entry<? extends M, ? extends I> entry)
Возвращает true, если указанная запись должна отображаться; возвращает false, если запись должна быть скрыта.
static <M,I> RowFilter<M,I> notFilter(RowFilter<M,I> filter)
Возвращает RowFilter, который включает записи, если предоставленный фильтр не включает запись.
static <M,I> RowFilter<M,I> numberFilter(RowFilter.ComparisonType type, Number number, int... indices)
Возвращает RowFilter, который включает записи, у которых есть хотя бы одно значение Number, удовлетворяющее заданным критериям.
static <M,I> RowFilter<M,I> orFilter(Iterable<? extends RowFilter<? super M, ? super I>> filters)
Возвращает RowFilter, который включает записи, если любая из предоставленных фильтров включает запись.
static <M,I> RowFilter<M,I> regexFilter(String regex, int... indices)
Возвращает RowFilter, который использует регулярное выражение для определения включения записей.

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание конструкторов

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 не является допустимым регулярным выражением.
См. также:
  • 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());
 
Параметры типа:
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, включающий записи, у которых есть хотя бы одно числовое значение, соответствующее указанным критериям. Например, следующий фильтр будет включать только записи с хотя бы одним числовым значением, равным 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
См. также:
  • 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);
 
Параметры типа:
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, который включает записи, если переданный фильтр не включает запись.
Параметры типа:
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, 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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/javax/swing/RowFilter.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API