M - тип модели; например PersonModelI - тип идентификатора; при использовании TableRowSorter это будет Integerpublic 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. Только Persons с возрастом более чем 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
Перечисление возможных сравнительных значений поддерживается частью значения по умолчанию
RowFilters. |
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 nullIllegalArgumentException - если любой из indices <0PatternSyntaxException - если regex не допустимое регулярное выражение.Patternpublic 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 nullIllegalArgumentException - если любой из indices <0 или type nullCalendar, Datepublic 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 nullpublic 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 - RowFilters, чтобы протестироватьRowFilter реализация указанных критериевIllegalArgumentException - если какой-либо из фильтров nullNullPointerException - если 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 - RowFilters, чтобы протестироватьRowFilter реализация указанных критериевIllegalArgumentException - если какой-либо из фильтров nullNullPointerException - если filters нульArrays.asList(T...)public static <M,I> RowFilter<M,I> notFilter(RowFilter<M,I> filter)
RowFilter это включает записи, если предоставленный фильтр не включает запись.filter - RowFilter инвертироватьRowFilter реализация указанных критериевIllegalArgumentException - если filter nullpublic abstract boolean include(RowFilter.Entry<? extends M,? extends I> entry)
entry параметр допустим только для продолжительности вызова. Используя entry после того, как вызов возвращает результаты в неопределенном поведении.
entry - не -null возразите, что обертывает базовый объект от модели
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92