JXTable

Résolu
paesmarc Messages postés 24 Date d'inscription mercredi 6 mai 2009 Statut Membre Dernière intervention 22 août 2013 - 12 janv. 2011 à 09:40
paesmarc Messages postés 24 Date d'inscription mercredi 6 mai 2009 Statut Membre Dernière intervention 22 août 2013 - 13 janv. 2011 à 12:53
Bonjour,
Je souhaite faire un 'moteur de recherche' sur un JXTable. Ce composant à une fonction de recherche (Ctrl+f) mais j'aimerais pouvoir faire cette recherche à partir d'un JTextField (donc pas devoir appeler la messageBox par Ctrl F).
Pouvez-vous m'aider ?
Je vois bien dans les API qu'il y a une interface 'Searchable' mais je ne parviens pas à l'utiliser...

6 réponses

Utilisateur anonyme
12 janv. 2011 à 13:03
Bonjour

La documentation est pourtant très claire à ce sujet, il suffit d'appeler la méthode setSearchable(Searchable searchable) en lui passant ta propre implémentation de l'interface Searchable. La documentation explique très bien ce que les méthodes à implémenter doivent retourner.

Cependant, tu devrais plutôt récupérer l'instance de Searchable déjà utilisée par la table avec la méthode getSearchable() et appeler la méthode search(String searchString) sur cet objet en lui passant le contenu de ton champ de texte ce qui va te renvoyer l'indice de la chaîne si elle se trouve dans la table. Bon courage.














TUER : http://tuer.sourceforge.net/tuer.jnlp

yeah! vive java
3
paesmarc Messages postés 24 Date d'inscription mercredi 6 mai 2009 Statut Membre Dernière intervention 22 août 2013
12 janv. 2011 à 18:19
Merci,

J'ai utilisé la solution avec la méthode getSearchable() et le résultat me satisfait.
Néanmoins, puis-je encore abuser de ton savoir ?
Est-il possible de faire une recherche sans que se soit sensible à la casse ?

Marc
0
Utilisateur anonyme
12 janv. 2011 à 19:00
C'est possible mais pas par défaut. Utilise la première méthode que j'ai proposée mais en dérivant de la classe org.jdesktop.swingx.JXTable.TableSearchable et en surchargeant la méthode search().








TUER : http://tuer.sourceforge.net/tuer.jnlp

yeah! vive java
0
paesmarc Messages postés 24 Date d'inscription mercredi 6 mai 2009 Statut Membre Dernière intervention 22 août 2013
13 janv. 2011 à 08:44
Là par contre, je ne parviens pas à implémenter (je débute !!!).
Tu n'aurais pas un exemple de code ???
J'espère ne pas abuser...

Marc
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
13 janv. 2011 à 12:01
Tu n'abuses pas mais ne te lance pas dans un projet en Java sans en avoir les bases. Fais une classe du genre :

import org.jdesktop.swingx.JXTable.TableSearchable;

public TableCaseUnsensitiveSearchable extends JXTable.TableSearchable{

    @Override
    public int search(java.lang.String searchString){
        int result;
        //TODO: à toi de coder, utilise equalsIgnoreCase
        return(result);
    }
}


Si tu as du mal à comprendre ce que j'ai expliqué, je te recommande vivement de jeter un coup d'oeil aux conseils que je donne aux débutants :
http://www.javafr.com/forum/sujet-CONSEIL-BIEN-DEBUTER-JAVA_1489893.aspx










TUER : http://tuer.sourceforge.net/tuer.jnlp

yeah! vive java
0
paesmarc Messages postés 24 Date d'inscription mercredi 6 mai 2009 Statut Membre Dernière intervention 22 août 2013
13 janv. 2011 à 12:53
Oui, j'avais essayé de cette manière mais j'avais un message d'erreur (No enclosing instance of type JXTable is available due to some intermediate constructor invocation) dont je ne saisissais pas le sens !
Donc, je me suis dit que je faisais mauvaise route.
Ce n'est pas très grave , je vais garder ma première solution pour le moment. Encore merci pour l'aide.

Marc
0
Rejoignez-nous