Combobox change au fur et à mesure de la saisie

naheulbeuk22 Messages postés 11 Date d'inscription mardi 22 décembre 2009 Statut Membre Dernière intervention 6 janvier 2010 - 19 déc. 2007 à 20:04
 Utilisateur anonyme - 21 déc. 2007 à 09:35
Bonsoir à tous !

j'aurai besoin d'un peu d'aide svp. Je réalise en java une application qui permet de rechercher un étudiant par son nom.
Dans une JCombobox éditable, je voudrais que l'utilisateur puisse taper le nom de l'étudiant et que tous les étudiants dont le nom commencent par les lettres tapées dans la combobox s'affichent en tant que valeurs sélectionnables dans la combobox.
ex si on tape "to", la liste des valeurs de la combobox devra contenir "toto", "toupin", "touboulic", etc...
voilà si vous pouviez m'aider à implémenter cela, ce serait vraiment super sympa !

je précise : je développe sous Eclipse avec la bibliothèque swing ! et les noms des étudiants seront récupérés via une BDD accédée via JDBC !

bonne soirée et merci par avance !

4 réponses

Utilisateur anonyme
19 déc. 2007 à 23:18
Déjà stocke les noms en mémoire dans un cache, ne va pas les chercher en base à chaque fois qu'un utilisateur se sert de ta combobox. Ensuite, fais autant de fois que nécessaire addItem(...) pour ajouter les noms possibles quand l'utilisateur commence à entrer un truc. En fait, au début, tu mets tous les noms et au fil des lettres tapées, tu fais removeItem(...) sur les items qui contiennent des noms qui ne doivent plus être affichés. Aide-toi des expressions régulières de Java pour éliminer les chaînes qui ne t'intéressent plus, par exemple dans le cas que tu cites :
Pattern p = Pattern.
compile
("to*");
Matcher m = p.
matcher
("touboulic");

boolean b = m.
matches
();

Le booléen b est vrai si le nom que tu analyses commence par "to". Va farfouiller dans la documentation Java si tu as besoin de plus de précisions (l'exemple que je t'ai donné vient de là) :
http://java.sun.com/javase/6/docs/api/

TUER : http://tuer.tuxfamily.org/tuer.php

yeah! vive java
0
naheulbeuk22 Messages postés 11 Date d'inscription mardi 22 décembre 2009 Statut Membre Dernière intervention 6 janvier 2010
20 déc. 2007 à 16:27
coucou, merci pour ta réponse ! j'ai bien compris ce que tu m'as dit et vais de ce pas le réaliser !

par contre juste une info : quel écouteur mettre sur la combobox pour tester si l'utilisateur a entré ou enlevé une lettre ? (si le texte de la combobox change quoi)

merci encore et bonne soirée
0
Utilisateur anonyme
21 déc. 2007 à 07:29
Récupère le composant qui sert à saisir le texte à l'intérieur de ta combobox et place un CaretListener ou un TextListener dessus :
Component component=maComboBox.getEditor().getEditorComponent();
(TextComponent)component.addTextListener(new TextListener(){
     ....
});
Une des deux méthodes marche. Essaie de trouver la classe réelle du composant que tu as et ça te permettra d'orienter tes recherches. Sous eclipse, mets-toi en mode debug, mets un point d'arrêt quand tu récupères le composant et regarde sa classe avec "inspect".

TUER : http://tuer.tuxfamily.org/tuer.php

yeah! vive java
0
Utilisateur anonyme
21 déc. 2007 à 09:35
Ceci répond à ton problème :
http://www.orbital-computer.de/JComboBox/

Apparemment, j'avais raison :
// get the combo box' editor component
JTextComponent editor = (JTextComponent) comboBox.getEditor().getEditorComponent();

J'espère que tout cela va te servir. Bon courage.


TUER : http://tuer.tuxfamily.org/tuer.php

yeah! vive java
0
Rejoignez-nous