M
- тип модели; например PersonModel
I
- тип идентификатора; при использовании TableRowSorter
это будет Integer
public abstract class RowFilter<M,I> extends Object
RowFilter
используется, чтобы отфильтровать записи от модели так, чтобы их не показали в представлении. Например, a RowFilter
связанный с a JTable
мог бы только позволить строки, которые содержат столбец с определенной строкой. Значение записи зависит от компонентного типа. Например, когда фильтр связывается с a JTable
, запись соответствует строке; когда связано с a 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
имеет два формальных параметра типа, которые позволяют Вам создавать a RowFilter
для определенной модели. Например, следующее принимает определенную модель, которая обертывает объекты типа Person
. Только Person
s с возрастом более чем 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);
TableRowSorter
Модификатор и Тип | Класс и Описание |
---|---|
static class |
RowFilter. ComparisonType
Перечисление возможных сравнительных значений поддерживается частью значения по умолчанию
RowFilter s. |
static class |
RowFilter.Entry<M,I>
Entry объект передают к экземплярам RowFilter , разрешение фильтра получить значение данных записи, и таким образом определить, нужно ли запись показать. |
Конструктор и Описание |
---|
RowFilter() |
Модификатор и Тип | Метод и Описание |
---|---|
static <M,I> RowFilter<M,I> |
andFilter(Iterable<? extends RowFilter<? super M,? super I>> filters)
Возвраты a
RowFilter это включает записи, если все предоставленные фильтры включают запись. |
static <M,I> RowFilter<M,I> |
dateFilter(RowFilter.ComparisonType type, Date date, int... indices)
Возвраты a
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)
Возвраты a
RowFilter это включает записи, если предоставленный фильтр не включает запись. |
static <M,I> RowFilter<M,I> |
numberFilter(RowFilter.ComparisonType type, Number number, int... indices)
Возвраты a
RowFilter это включает записи, у которых есть по крайней мере один Number значение, соответствующее указанным критериям. |
static <M,I> RowFilter<M,I> |
orFilter(Iterable<? extends RowFilter<? super M,? super I>> filters)
Возвраты a
RowFilter это включает записи, если какой-либо из предоставленных фильтров включает запись. |
static <M,I> RowFilter<M,I> |
regexFilter(String regex, int... indices)
Возвраты a
RowFilter это использует регулярное выражение, чтобы определить который записи включать. |
public static <M,I> RowFilter<M,I> regexFilter(String regex, int... indices)
RowFilter
это использует регулярное выражение, чтобы определить который записи включать. Только записи по крайней мере с одним совпадающим значением включаются. Например, следующее создает a RowFilter
это включает записи по крайней мере с одним значением, запускающимся с "a": RowFilter.regexFilter("^a");
Возвращенное использование фильтра Matcher.find()
протестировать на включение. Чтобы протестировать на точные совпадения используют символы '^' и '$', чтобы соответствовать начало и конец строки соответственно. Например, "^foo$" включает только строки, строка которых точно "foo" и не, например, "еда". См. Pattern
для полного описания поддерживаемых конструкций регулярного выражения.
regex
- регулярное выражение, чтобы фильтровать наindices
- индексы значений, чтобы проверить. Если не предоставленный все значения оцениваютсяRowFilter
реализация указанных критериевNullPointerException
- если regex
null
IllegalArgumentException
- если любой из indices
<0PatternSyntaxException
- если regex
не допустимое регулярное выражение.Pattern
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
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
public static <M,I> RowFilter<M,I> orFilter(Iterable<? extends RowFilter<? super M,? super I>> filters)
RowFilter
это включает записи, если какой-либо из предоставленных фильтров включает запись. Следующий пример создает a RowFilter
это будет включать любые записи, содержащие строку "foo" или строку "панель":
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
s, чтобы протестироватьRowFilter
реализация указанных критериевIllegalArgumentException
- если какой-либо из фильтров null
NullPointerException
- если filters
нульArrays.asList(T...)
public static <M,I> RowFilter<M,I> andFilter(Iterable<? extends RowFilter<? super M,? super I>> filters)
RowFilter
это включает записи, если все предоставленные фильтры включают запись. Следующий пример создает a RowFilter
это будет включать любые записи, содержащие строку "foo" и строку "панель":
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
s, чтобы протестироватьRowFilter
реализация указанных критериевIllegalArgumentException
- если какой-либо из фильтров null
NullPointerException
- если filters
нульArrays.asList(T...)
public static <M,I> RowFilter<M,I> notFilter(RowFilter<M,I> filter)
RowFilter
это включает записи, если предоставленный фильтр не включает запись.filter
- RowFilter
инвертироватьRowFilter
реализация указанных критериевIllegalArgumentException
- если filter
null
public abstract boolean include(RowFilter.Entry<? extends M,? extends I> entry)
entry
параметр допустим только для продолжительности вызова. Используя entry
после того, как вызов возвращает результаты в неопределенном поведении.
entry
- не -null
возразите, что обертывает базовый объект от модели
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92