This documentation differs from the official API. Jadeite adds extra features to the API including: variable font sizes, constructions examples, placeholders for classes and methods, and auto-generated “See Also” links. Additionally it is missing some items found in standard Javadoc documentation, including: generics type information, “Deprecated” tags and comments, “See Also” links, along with other minor differences. Please send any questions or feedback to bam@cs.cmu.edu.


javax.swing
class RowFilter

java.lang.Object extended by javax.swing.RowFilter

public abstract class RowFilter
extends Object

RowFilter is used to filter out entries from the model so that they are not shown in the view. For example, a RowFilter associated with a JTable might only allow rows that contain a column with a specific string. The meaning of entry depends on the component type. For example, when a filter is associated with a JTable, an entry corresponds to a row; when associated with a JTree, an entry corresponds to a node.

Subclasses must override the include method to indicate whether the entry should be shown in the view. The Entry argument can be used to obtain the values in each of the columns in that entry. The following example shows an include method that allows only entries containing one or more values starting with the string "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 has two formal type parameters that allow you to create a RowFilter for a specific model. For example, the following assumes a specific model that is wrapping objects of type Person. Only Persons with an age over 20 will be shown:
 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);
 


Nested Class Summary
static enum

           Enumeration of the possible comparison values supported by some of the default RowFilters.
abstract static class

           An Entry object is passed to instances of RowFilter, allowing the filter to get the value of the entry's data, and thus to determine whether the entry should be shown.
 
Constructor Summary

          
 
Method Summary
static RowFilter

          Returns a RowFilter that includes entries if all of the supplied filters include the entry.
static RowFilter
dateFilter(RowFilter.ComparisonType type, Date date, int[] indices)

          Returns a RowFilter that includes entries that have at least one Date value meeting the specified criteria.
abstract boolean

          Returns true if the specified entry should be shown; returns false if the entry should be hidden.
static RowFilter

          Returns a RowFilter that includes entries if the supplied filter does not include the entry.
static RowFilter
numberFilter(RowFilter.ComparisonType type, Number number, int[] indices)

          Returns a RowFilter that includes entries that have at least one Number value meeting the specified criteria.
static RowFilter
orFilter(Iterable filters)

          Returns a RowFilter that includes entries if any of the supplied filters includes the entry.
static RowFilter
regexFilter(String regex, int[] indices)

          Returns a RowFilter that uses a regular expression to determine which entries to include.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RowFilter

public RowFilter()
Method Detail

andFilter

public static RowFilter andFilter(Iterable filters)
Returns a RowFilter that includes entries if all of the supplied filters include the entry.

The following example creates a RowFilter that will include any entries containing the string "foo" and the string "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);
 

Parameters:
filters - the RowFilters to test
Returns:
a RowFilter implementing the specified criteria

dateFilter

public static RowFilter dateFilter(RowFilter.ComparisonType type,
                                   Date date,
                                   int[] indices)
Returns a RowFilter that includes entries that have at least one Date value meeting the specified criteria. For example, the following RowFilter includes only entries with at least one date value after the current date:
   RowFilter.dateFilter(ComparisonType.AFTER, new Date());
 

Parameters:
type - the type of comparison to perform
date - the date to compare against
indices - the indices of the values to check. If not supplied all values are evaluated
Returns:
a RowFilter implementing the specified criteria

include

public abstract boolean include(RowFilter.Entry entry)
Returns true if the specified entry should be shown; returns false if the entry should be hidden.

The entry argument is valid only for the duration of the invocation. Using entry after the call returns results in undefined behavior.

Parameters:
entry - a non-null object that wraps the underlying object from the model
Returns:
true if the entry should be shown

notFilter

public static RowFilter notFilter(RowFilter filter)
Returns a RowFilter that includes entries if the supplied filter does not include the entry.

Parameters:
filter - the RowFilter to negate
Returns:
a RowFilter implementing the specified criteria

numberFilter

public static RowFilter numberFilter(RowFilter.ComparisonType type,
                                     Number number,
                                     int[] indices)
Returns a RowFilter that includes entries that have at least one Number value meeting the specified criteria. For example, the following filter will only include entries with at least one number value equal to 10:
   RowFilter.numberFilter(ComparisonType.EQUAL, 10);
 

Parameters:
type - the type of comparison to perform
number
indices - the indices of the values to check. If not supplied all values are evaluated
Returns:
a RowFilter implementing the specified criteria

orFilter

public static RowFilter orFilter(Iterable filters)
Returns a RowFilter that includes entries if any of the supplied filters includes the entry.

The following example creates a RowFilter that will include any entries containing the string "foo" or the string "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);
 

Parameters:
filters - the RowFilters to test
Returns:
a RowFilter implementing the specified criteria

regexFilter

public static RowFilter regexFilter(String regex,
                                    int[] indices)
Returns a RowFilter that uses a regular expression to determine which entries to include. Only entries with at least one matching value are included. For example, the following creates a RowFilter that includes entries with at least one value starting with "a":
   RowFilter.regexFilter("^a");
 

The returned filter uses {@link java.util.regex.Matcher#find} to test for inclusion. To test for exact matches use the characters '^' and '$' to match the beginning and end of the string respectively. For example, "^foo$" includes only rows whose string is exactly "foo" and not, for example, "food". See {@link java.util.regex.Pattern} for a complete description of the supported regular-expression constructs.

Parameters:
regex - the regular expression to filter on
indices - the indices of the values to check. If not supplied all values are evaluated
Returns:
a RowFilter implementing the specified criteria


This documentation differs from the official API. Jadeite adds extra features to the API including: variable font sizes, constructions examples, placeholders for classes and methods, and auto-generated “See Also” links. Additionally it is missing some items found in standard Javadoc documentation, including: generics type information, “Deprecated” tags and comments, “See Also” links, along with other minor differences. Please send any questions or feedback to bam@cs.cmu.edu.
This page displays the Jadeite version of the documention, which is derived from the offical documentation that contains this copyright notice:
Copyright 2008 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.
The official Sun™ documentation can be found here at http://java.sun.com/javase/6/docs/api/.