Liste déroulante et restriction de choix [Résolu]

Signaler
Messages postés
17
Date d'inscription
mercredi 3 janvier 2007
Statut
Membre
Dernière intervention
14 janvier 2009
-
Messages postés
17
Date d'inscription
mercredi 3 janvier 2007
Statut
Membre
Dernière intervention
14 janvier 2009
-
Bonjour à tous,

Sur une interface graphique, j'affiche une liste déroulante.
Le contenu de cette liste déroulante est un vecteur ne contenant que des chaînes de caractères.
Le contenu est assez long et non trié. Je n'ai pas trouvé de fonction de tri automatique et je pense peut-être en faire une si le besoin s'en fait sentir.
Mon principal souci ne se situe pas dans ce tri mais plutôt dans la longueur du contenu. Je souhaiterais que le contenu se réduise en tapant une chaîne de caractère. Pour être plus précis, je souhaiterai qu'en tapant, par exemple, "Jean" le contenu visible se réduise aux éléments contenant la chaîne "Jean".

J'imagine que ce genre d'algorithme existe quelque part (on le retrouve souvent pour les sites web) mais je n'arrive pas à mettre la main dessus.

Merci d'avance

4 réponses

Messages postés
744
Date d'inscription
dimanche 1 avril 2007
Statut
Membre
Dernière intervention
9 mai 2010
8
Salut salut,

Bon je vais répondre en 2 temps à tes questions.

Tout d'abord, saches que pour trier une List (donc un Vector ou un ArrayList ou autre... bref tout ce qui implémente List<E>), il existe une méthode pour trier facilement

Vector<String> tonVector = new Vector<String>();
.... // remplissage du vector dans le désordre
Collections.sort(tonVector);
// voilà, ici, le vecteur est trier par ordre alphabétique

Je reviens vers toi plus tard (trop de taf) pour ce que tu veux faire avec ta liste

j'ai une piste

<hr width="100%" size="2" />
 C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
Messages postés
744
Date d'inscription
dimanche 1 avril 2007
Statut
Membre
Dernière intervention
9 mai 2010
8
Re,

Merci d'avoir validé ma réponse.
Bon j'ai regardé, et le truc c'est que j'arrive à un dilemne.
Si tu veux, d'origine, si tu fous le focus sur la JComboBox et que tu tapes du texte, ça positionne la liste automatiquement sur l'élément qui s'en rapproche le plus.
Ca c'est pas mal déjà et y'a rien à faire surtout.

Ensuite, j'ai essayé de mettre la JComboBox en "editable" (setEditable(true)); Mais après, c'est bien on peut saisir dans la JComboBox, par contre, je ne sais pas sur quel objet l'évènement de saisi est généré... J'ai essayé à peu près tous les listener qu'il y a sur la JComboBox mais sans résultat, aucun évènement ne m'était renvoyé.

Un truc qui par contre serait possible, ça serait de faire un JTextArea à coté et que la JComboBox soit filtré en fonction de ce que tu tapes dans ce textarea...
A voir quoi...
Désolé, je n'ai pas plus pour toi.

<hr width="100%" size="2" />
 C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
Messages postés
17
Date d'inscription
mercredi 3 janvier 2007
Statut
Membre
Dernière intervention
14 janvier 2009

Je vois ça lundi et je validerais ensuite.

Merci
Messages postés
17
Date d'inscription
mercredi 3 janvier 2007
Statut
Membre
Dernière intervention
14 janvier 2009

Désolé de répondre tardivement. Je m'en suis sorti avec

String texte = recherche.getText().toUpperCase();
c.removeAllItems();
int tailleListe = listeNoms.size();
          
for(int i=0;i<tailleListe;i++)
{
if(listeNoms.elementAt(i).toString().toUpperCase().contains(texte))
c.addItem(listeNoms.elementAt(i).toString());
}

En espérant que ça puisse servir à d'autres personnes