2009-10-27 64 views
1

我擡頭看看如何在這裏使用多個過濾器並使用常規表格,答案都指向GlazedLists。但是,答案並未指定如何使用它。我能夠得到一個過濾器工作,但不知道如何獲得多個過濾器。 對於一個過濾器我用:使用JTable或GlazedLists創建和使用多個過濾器/搜索

// nameE is a BasicEventList containing classes (name) which 
    // contain the table values 
    TextFilterList filtered = new TextFilterList(nameE); 
    JTextField filterEdit = filtered.getFilterEdit(); 

    // Inside the table value class (name) there is a filter for myName 
    public void getFilterStrings(List baseList) { 
     baseList.add(myName); 
    } 

複製的代碼,並創建另一個JTextField不起作用。我看了這個問題,看起來CompositeMatcherEditor可能工作。問題是我不知道如何實現這一點。

另外,我正在使用Eclipse。我下載了GlazedLists 1.8.0並將其放入Eclipse。但是,我無法使用它。我有紅色方塊(除了源文件夾)!我甚至添加了jar文件。

我希望我已經正確地解釋了我自己。如果我需要擴展,請告訴我。

我的引擎收錄:NameBrowserTableFormatTableModel

回答

5

TextFilterList已經過時 - 見javadocs - 但這是一個次要問題。

有幾種方法,你可以用在這裏 - 如果你想很簡單,然後就換​​另一種過濾器列表過濾器列表:

EventList filtered = new FilterList(new FilterList(nameE, myFirstMatcherEditor), mySecondMatcherEditor); 

一個更好的辦法是使用多個匹配編輯器創建一個CompositeMatcherEditor

EventList filtered = new FilterList(nameE, new CompositeMatcherEditor(myFirstMatcherEditor, mySecondMatcherEditor)); 

您可以使用setMode來控制編輯器是否使用AND或OR行爲進行組合。

這裏的Must Read info關於使用過濾器列表。

可用的屏幕錄像here也值得幾分鐘投資。

+0

第一個選項非常有效。 爲了使第三你可以使用: 'EVENTLIST過濾=新FilterList(新FilterList(新FilterList(新FilterList(nameE,myFirstMatcherEditor),mySecondMatcherEditor),myLastMatcherEditor);' 這是否正確 第二?選項給了我一個錯誤 'CompositeMatcherEditor未定義' – twodayslate 2009-10-28 16:56:55

+0

這裏的API文檔:http://publicobject.com/glazedlists/glazedlists-1.8.0/api/ - 毫無疑問,CompositeMatcherEditor是正確的方法 - 堆疊篩選器列表就像你所做的那樣,但效率很低 – 2009-10-29 03:37:55

+0

PS - 你的錯誤信息表明你沒有正確的軟件包導入如果你不確定如何導入必要的軟件包(ca.odell.glazedlists.matchers),讓我知道。我真的*建議你看看我上面發佈的必須閱讀的信息 - 在這個和屏幕錄像中都有很好的示例代碼。 – 2009-10-29 03:40:11