Spec-Zone.ru › OpenJDK 8

Класс 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

Перечисление возможных значений сравнения, поддерживаемых некоторыми из стандартных RowFilter.

static class  RowFilter.Entry<M,I>

Объект Entry передаётся экземплярам RowFilter, позволяя фильтру получить значение данных записи и, таким образом, определить, должна ли запись отображаться.

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

Конструктор и описание
RowFilter()

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

Модификатор и тип Метод и описание
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

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 - если 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());

Параметры:
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);

Параметры:
type - тип сравнения для выполнения
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);
Параметры:
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);
Параметры:
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, который включает записи, если предоставленный фильтр не включает запись.

Параметры:
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, 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.

Spec-Zone.ru

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