Recherche auto-complétion

Résolu
ssinf Messages postés 16 Date d'inscription jeudi 31 janvier 2008 Statut Membre Dernière intervention 24 août 2011 - 9 août 2011 à 15:14
ssinf Messages postés 16 Date d'inscription jeudi 31 janvier 2008 Statut Membre 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.

19 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
24 août 2011 à 15:47
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()){
3
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
9 août 2011 à 15:19
Bonjour, quel est ton problème exactement, ou se situe ta difficulté ?
0
ssinf Messages postés 16 Date d'inscription jeudi 31 janvier 2008 Statut Membre Dernière intervention 24 août 2011
9 août 2011 à 15:29
mon problème est que j'ai aucune idée sur la recherche auto-complétion.
0
dvwyns Messages postés 159 Date d'inscription mardi 2 janvier 2007 Statut Membre Dernière intervention 7 mai 2012
9 août 2011 à 16:07
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
0

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

Posez votre question
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
9 août 2011 à 16:47
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.
0
ssinf Messages postés 16 Date d'inscription jeudi 31 janvier 2008 Statut Membre Dernière intervention 24 août 2011
10 août 2011 à 11:35
je vais essayer.merci.
0
ssinf Messages postés 16 Date d'inscription jeudi 31 janvier 2008 Statut Membre Dernière intervention 24 août 2011
14 août 2011 à 12:51
jusqu'à maintenait j'ai mal à s'en sortir .
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
14 août 2011 à 13:54
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.
0
ssinf Messages postés 16 Date d'inscription jeudi 31 janvier 2008 Statut Membre Dernière intervention 24 août 2011
15 août 2011 à 12:37
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.
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
16 août 2011 à 08:16
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.
0
ssinf Messages postés 16 Date d'inscription jeudi 31 janvier 2008 Statut Membre Dernière intervention 24 août 2011
17 août 2011 à 13:46
Bonjour;

est ce que une JComboBox éditable se ne serais pas une solution??
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
17 août 2011 à 15:07
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.
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
17 août 2011 à 15:08
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)
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
17 août 2011 à 18:49
Salut, ;o)

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

GodConan ;o)
0
ssinf Messages postés 16 Date d'inscription jeudi 31 janvier 2008 Statut Membre Dernière intervention 24 août 2011
18 août 2011 à 12:25
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.
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
18 août 2011 à 13:19
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
0
ssinf Messages postés 16 Date d'inscription jeudi 31 janvier 2008 Statut Membre Dernière intervention 24 août 2011
18 août 2011 à 13:40
merci,je vais voir...
0
ssinf Messages postés 16 Date d'inscription jeudi 31 janvier 2008 Statut Membre Dernière intervention 24 août 2011
24 août 2011 à 15:27
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 ?
0
ssinf Messages postés 16 Date d'inscription jeudi 31 janvier 2008 Statut Membre Dernière intervention 24 août 2011
24 août 2011 à 16:20
c'est résolu .merci infiniment.
0
Rejoignez-nous