2009-10-27 7 views
1

J'ai recherché comment utiliser plusieurs filtres ici avec une table standard et les réponses ont toutes pointé vers GlazedLists. Cependant, les réponses ne précisaient pas comment l'utiliser. J'ai réussi à faire fonctionner un filtre mais je ne sais pas comment en obtenir plus d'un. Pour un filtre je:Création et utilisation de plusieurs filtres/recherches à l'aide de JTable ou de 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); 
    } 

Dupliquer le code et créer un autre JTextField ne fonctionne pas. J'ai regardé ce problème et il semble CompositeMatcherEditor peut fonctionner. Le problème est que je ne sais pas comment l'implémenter.

En outre, j'utilise Eclipse. J'ai téléchargé GlazedLists 1.8.0 et l'ai déposé dans Eclipse. Cependant, je ne peux pas l'utiliser. J'ai des carrés rouges partout (sauf pour le dossier source)! J'ai même ajouté le fichier jar.

J'espère que je me suis expliqué correctement. S'il vous plaît laissez-moi savoir si j'ai besoin de développer.

Mon Pastebin: Name, Browser, TableFormat, TableModel

Répondre

5

TextFilterList est dépréciée - voir le javadocs - mais c'est une question secondaire.

Il existe plusieurs approches que vous pouvez utiliser ici - si vous voulez vraiment simple, puis juste envelopper votre liste de filtres dans une autre liste de filtres:

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

Une meilleure façon est d'utiliser plusieurs éditeurs de matcher pour créer un CompositeMatcherEditor :

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

vous pouvez utiliser setMode pour contrôler si vos éditeurs sont combinés en utilisant AND ou OR comportement.

Voici Must Read info sur l'utilisation de listes de filtres.

Les screencasts disponibles here valent également l'investissement de quelques minutes.

+0

La première option a fonctionné à merveille. Pour faire un troisième que vous utilisez: 'EventList filtré = new FilterList (nouvelle FilterList (nouvelle FilterList (nouvelle FilterList (NAMEE, myFirstMatcherEditor), mySecondMatcherEditor), myLastMatcherEditor);' Est-ce exact Le second? l'option m'a donné une erreur 'CompositeMatcherEditor n'est pas défini' – twodayslate

+0

Voici les documents de l'API: http://publicobject.com/glazedlists/glazedlists-1.8.0/api/ - sans aucun doute, CompositeMatcherEditor est la bonne façon de le faire - empiler les listes de filtres comme vous l'avez fait fonctionnera, mais c'est inefficace –

+0

PS - votre message d'erreur indique que vous n'avez tout simplement pas les bonnes importations de paquets Si vous n'êtes pas sûr de savoir comment importer le paquet nécessaire (ca.odell.glazedlists.matchers), faites le moi savoir. Je * recommande * * vraiment que vous regardiez l'information de lisant que j'ai posté ci-dessus - il y a un très bon exemple de code dans les deux ceci et les screencasts. –

Questions connexes