Recherche auto-complétion [Résolu]

ssinf 16 Messages postés jeudi 31 janvier 2008Date d'inscription 24 août 2011 Dernière intervention - 9 août 2011 à 15:14 - Dernière réponse : ssinf 16 Messages postés jeudi 31 janvier 2008Date d'inscription 24 août 2011 Dernière intervention
- 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
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscription 17 mai 2018 Dernière intervention - 24 août 2011 à 15:47
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()){

Merci cs_Julien39 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de cs_Julien39
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscription 17 mai 2018 Dernière intervention - 9 août 2011 à 15:19
0
Merci
Bonjour, quel est ton problème exactement, ou se situe ta difficulté ?
Commenter la réponse de cs_Julien39
ssinf 16 Messages postés jeudi 31 janvier 2008Date d'inscription 24 août 2011 Dernière intervention - 9 août 2011 à 15:29
0
Merci
mon problème est que j'ai aucune idée sur la recherche auto-complétion.
Commenter la réponse de ssinf
dvwyns 160 Messages postés mardi 2 janvier 2007Date d'inscription 7 mai 2012 Dernière intervention - 9 août 2011 à 16:07
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
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscription 17 mai 2018 Dernière intervention - 9 août 2011 à 16:47
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
ssinf 16 Messages postés jeudi 31 janvier 2008Date d'inscription 24 août 2011 Dernière intervention - 10 août 2011 à 11:35
0
Merci
je vais essayer.merci.
Commenter la réponse de ssinf
ssinf 16 Messages postés jeudi 31 janvier 2008Date d'inscription 24 août 2011 Dernière intervention - 14 août 2011 à 12:51
0
Merci
jusqu'à maintenait j'ai mal à s'en sortir .
Commenter la réponse de ssinf
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscription 17 mai 2018 Dernière intervention - 14 août 2011 à 13:54
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
ssinf 16 Messages postés jeudi 31 janvier 2008Date d'inscription 24 août 2011 Dernière intervention - 15 août 2011 à 12:37
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
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscription 17 mai 2018 Dernière intervention - 16 août 2011 à 08:16
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
ssinf 16 Messages postés jeudi 31 janvier 2008Date d'inscription 24 août 2011 Dernière intervention - 17 août 2011 à 13:46
0
Merci
Bonjour;

est ce que une JComboBox éditable se ne serais pas une solution??
Commenter la réponse de ssinf
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscription 17 mai 2018 Dernière intervention - 17 août 2011 à 15:07
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
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscription 17 mai 2018 Dernière intervention - 17 août 2011 à 15:08
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
cs_GodConan 2116 Messages postés samedi 8 novembre 2003Date d'inscriptionContributeurStatut 6 octobre 2012 Dernière intervention - 17 août 2011 à 18:49
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
ssinf 16 Messages postés jeudi 31 janvier 2008Date d'inscription 24 août 2011 Dernière intervention - 18 août 2011 à 12:25
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
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscription 17 mai 2018 Dernière intervention - 18 août 2011 à 13:19
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
ssinf 16 Messages postés jeudi 31 janvier 2008Date d'inscription 24 août 2011 Dernière intervention - 18 août 2011 à 13:40
0
Merci
merci,je vais voir...
Commenter la réponse de ssinf
ssinf 16 Messages postés jeudi 31 janvier 2008Date d'inscription 24 août 2011 Dernière intervention - 24 août 2011 à 15:27
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
ssinf 16 Messages postés jeudi 31 janvier 2008Date d'inscription 24 août 2011 Dernière intervention - 24 août 2011 à 16:20
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.