JavaTM 2 Platform
Standard Ed. 6

javax.swing
類別 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 用於從模型中過濾條目,使得這些條目不會在視圖中顯示。例如,一個與 JTable 關聯的 RowFilter 可能只允許包含帶指定字元串的列的那些行。條目 的含義取決於元件型別。例如,當過濾器與 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 型別物件的特定模型。只顯示年齡大於 20 的 Person
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>
          一個傳遞給 RowFilter 實例的 Entry 物件,允許過濾器獲取該條目的資料的值,以確定是否應該顯示該條目。
 
建構子摘要
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 - 如果 regexnull
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 - 如果 datenull
IllegalArgumentException - 如果任一 indices 值小於 0 或 typenull
另請參見:
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,typenull 或者 numbernull

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 - 要求反 (negate) 的 RowFilter
返回:
一個實作指定標準的 RowFilter
拋出:
IllegalArgumentException - 如果 filternull

include

public abstract boolean include(RowFilter.Entry<? extends M,? extends I> entry)
如果應該顯示指定的條目,則返回 true;如果應該隱藏該條目,則返回 false。

entry 參數只在調用期間有效。在調用返回之後使用 entry 將導致不確定的行為。

參數:
entry - 一個非 null 物件,它包裹取自模型的底層物件
返回:
如果應該顯示該條目,則返回 true

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only