Recherche auto-complétion [Résolu]

Messages postés
16
Date d'inscription
jeudi 31 janvier 2008
Dernière intervention
24 août 2011
- - Dernière réponse : ssinf
Messages postés
16
Date d'inscription
jeudi 31 janvier 2008
Dernière intervention
24 août 2011
- 24 août 2011 à 16:20
salut

je veut faire une recherche auto-complétion c'est à dire fur à mesure que je tape les lettres du nom que je cherche il me fait des propositions des noms qui existes dans la base de données .mais je ne sais pas comment faire?
merci d'avance pour votre aide.
Afficher la suite 

Votre réponse

19 réponses

Meilleure réponse
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
3
Merci
Bonjour,

ess.boit[i][1] ne contient pas plus de 6 caractères donc, tu ne peux pas récupérer les caractères suivants.

Pour que celà fonctionne ajoute un if(ess.boit[i][1].length>mot.length()){

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 105 internautes ce mois-ci

Commenter la réponse de cs_Julien39
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
0
Merci
Bonjour, quel est ton problème exactement, ou se situe ta difficulté ?
Commenter la réponse de cs_Julien39
Messages postés
16
Date d'inscription
jeudi 31 janvier 2008
Dernière intervention
24 août 2011
0
Merci
mon problème est que j'ai aucune idée sur la recherche auto-complétion.
Commenter la réponse de ssinf
Messages postés
160
Date d'inscription
mardi 2 janvier 2007
Dernière intervention
7 mai 2012
0
Merci
Tu commences ton programme en chargeant ton fichier où l'on retrouve tout les mots dans une liste (arraylist par exemple).
Après tu compares, à chaque fois que tu tapes une lettre, le mot (ou la lettre) se trouvant dans ton champ avec les mots de la liste.
Chaque fois que tu as un mot comportant le même lettrage de début (compare en faisant un substring), tu l'ajoutes dans un tableau, qd tu as fait le tour de tout les mots de ta base de mots, tu l'affiches.
Il existe de bien meilleur manière comme la table de hachage qui te permettra d'aller plus rapidement vers les mots recherchés, mais cette manière te permettra d'avoir un avant gout de tout les éléments d'affichage et de comparaison des mots dont tu auras besoin pour, si tu veux, par la suite travailler avec ce système

Bon courage
Commenter la réponse de dvwyns
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
0
Merci
Essayes déjà de le faire fonctionner avec un dictionnaire de taille assez réduite. La difficulté de ce genre d'exercice est de ne pas saturer la mémoire.

Charger tous les mots en mémoire est une bonne chose à faire pour commencer mais qui sera peut être à revoir par la suite.

Essayes d'éviter de créer un thread qui analyse toutes les secondes ta zone de texte mais effectue l'action dès qu'il y a un changement sur la zone de texte.

Tiens nous au courant de ton avancement et on te donnera d'autres conseils.
Commenter la réponse de cs_Julien39
Messages postés
16
Date d'inscription
jeudi 31 janvier 2008
Dernière intervention
24 août 2011
0
Merci
je vais essayer.merci.
Commenter la réponse de ssinf
Messages postés
16
Date d'inscription
jeudi 31 janvier 2008
Dernière intervention
24 août 2011
0
Merci
jusqu'à maintenait j'ai mal à s'en sortir .
Commenter la réponse de ssinf
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
0
Merci
Bonjour,

On ne peut pas tout faire à ta place. Si tu as un problème précis pose ta question mais sinon, nous ne pouvons pas t'aider.
Commenter la réponse de cs_Julien39
Messages postés
16
Date d'inscription
jeudi 31 janvier 2008
Dernière intervention
24 août 2011
0
Merci
j'ai deux problèmes :

1-je cherche l'action du JTextfield qui réagit chaque fois qu'on tape une lettre dans cette dernière.

2-comment afficher les propositions (comme la recherche google il nous propose des suggestions du notre recherche).merci infiniment.
Commenter la réponse de ssinf
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
0
Merci
Bonjour,

Tout d'abord, utilises un JTextArea plutot qu'un JTextField.

Ensuite, pour être notifié des changements du texte, utilises un KeyListener http://download.oracle.com/javase/1.4.2/docs/api/java/awt/event/KeyListener.html

Et enfin, Tu peux utiliser une JList que tu affiches sous le mot en question pour les propositions.
Commenter la réponse de cs_Julien39
Messages postés
16
Date d'inscription
jeudi 31 janvier 2008
Dernière intervention
24 août 2011
0
Merci
Bonjour;

est ce que une JComboBox éditable se ne serais pas une solution??
Commenter la réponse de ssinf
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
0
Merci
Si tu veux afficher les possibilités dans une JComboBox à la place de la JList que je t'avais conseillé, oui, c'est une autre possibilité tout aussi bonne.
Commenter la réponse de cs_Julien39
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
0
Merci
Je pense que l'auto-complétion que tu cherches à faire n'est pas sur un mot mais sur l'ensemble des mots du texte mais je n'en suis pas certain.

Si tu cherches juste à compléter un mot, oui la JComboBox éditable est une bonne solution (la meilleure sans doute)
Commenter la réponse de cs_Julien39
Messages postés
2116
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
0
Merci
Salut, ;o)

Perso, je prefere quand meme la JListe ;o) le renderer est beaucoup plus facil à gérer ;o)

GodConan ;o)
Commenter la réponse de cs_GodConan
Messages postés
16
Date d'inscription
jeudi 31 janvier 2008
Dernière intervention
24 août 2011
0
Merci
la recherche auto-complétion que je cherche à faire peut être sur 1,2 ou 3 mots maximums ,car je cherche des noms des boites d'archive stocké dans la BDD.
Commenter la réponse de ssinf
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
0
Merci
Bonjour,

JE viens de poster un code qui permet de faire de l'auto-complétion, t l'adapteras sans doute facilement à ta problématique : http://www.javafr.com/codes/COMPLETION-AUTOMATIQUE_53480.aspx

Bon courage
Commenter la réponse de cs_Julien39
Messages postés
16
Date d'inscription
jeudi 31 janvier 2008
Dernière intervention
24 août 2011
0
Merci
merci,je vais voir...
Commenter la réponse de ssinf
Messages postés
16
Date d'inscription
jeudi 31 janvier 2008
Dernière intervention
24 août 2011
0
Merci
sayer je suis arriver à la faire mais j'ai un petit souci quand le nom à recherché dépasse les 6 caractères une exception s'affiche voila le code du comparaison des mots:
for(int f=0;f<lon;f++){
if(mot.charAt(f)==ess.boit[i][1].charAt(f)){
System.out.println("cha match:"+f );
}
}

et l'exception qui s'affiche :
Exception in thread "AWT-EventQueue-0" java.lang.StringIndexOutOfBoundsException: String index out of range: 6
    at java.lang.String.charAt(String.java:686)

je ne sais pas pourquoi ?
Commenter la réponse de ssinf
Messages postés
16
Date d'inscription
jeudi 31 janvier 2008
Dernière intervention
24 août 2011
0
Merci
c'est résolu .merci infiniment.
Commenter la réponse de ssinf

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.