Spec-Zone.ru › OpenJDK 21

Класс RowFilter<M,I>

java.lang.Object
javax.swing.RowFilter<M,I>
Type Parameters:
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);
 
Since:
1.6
See Also:
  • 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, включающий записи, имеющие хотя бы одно значение Number, соответствующее указанным критериям. Например, следующий фильтр будет включать только записи с хотя бы одним числовым значением, равным 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, 2023, 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/21/docs/api/java.desktop/javax/swing/RowFilter.html

Spec-Zone.ru

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