IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Création de completion dans une zone de texte


Sujet :

Java

  1. #1
    Membre régulier
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2004
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2004
    Messages : 528
    Points : 99
    Points
    99
    Par défaut Création de completion dans une zone de texte
    bonjour à tous,

    je suis sur un projet: j'ai créé une interface graphique tres simple (zone texte et un bouton).
    Je veux mettre dans le zone texte une sorte de completion. Je m'explique:

    J'ai un fichier excell avec dans la premiere colonne des mots (exemple: bonjour, bien; bonne,... c'est un exemple : ).
    Je souhaite, lorsque l'utilisateur tape une lettre (le "b" par exemple), mettre une liste juste en bas de la lettre avec tous les mots contenus dans le fichier exell commençant par un "b" (la liste peut egalement se trouver ailleurs si il le faut, je peux creer un liste à coté de ma zone de texte par ex. Mais le mieux de la placer en bas du mot que l'utilisateur est entrain de entrer)
    lorsque l'utilisateur tape une autre lettre, il y a nouveau un filtrage.
    Toutefois, l'utilisateur peut ecrire une mot qui n'est pas dans la liste.

    Ca c'est la premiere etape. Si j'arrive à faire ca, ce serait deja tres bien.

    Dans une seconde etape, je souhaiterais que l'utilisateur puisse choisir un mot dans la liste qui apparait (selection via les touches haut-bas) et puissse appuyer sur la touche enter pour que le mot s'ecrive dans le zone texte.

    Donc je souhaite faire une zone texte comme dans les editeur C++ ou java.

    comment faire? Toutes les idées sont bonnes à prendre.
    D'avance, je vous remercie de votre aide.

  2. #2
    Membre actif Avatar de @ldehan
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 215
    Points : 278
    Points
    278
    Par défaut
    tu as un TextArea ou juste un TextField, parce que si c'est un TextField je te conseille d'utiliser un combobox c'est plus intuitif pour ce genre de chose...

    sinon bah on en revient a la liste à coté. chaque fois que le text change tu refait ton filtre sur une collection de String qui contiendrait tous les mots

    tu la balayes en utilisant startsWith() de String pour faire le filtre et tu lui affiche

    s'il clique sur un élément de la lise tu remplaces le mot en cours par celui sélectionné.

  3. #3
    Membre régulier
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2004
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2004
    Messages : 528
    Points : 99
    Points
    99
    Par défaut
    Merci pour la reponse si rapide!!
    Au fait, j'ai une zone de texte, mais je peux changer son format. Du moment que l'utilisateur puisse ecrire dedans

    Mais je pense plus pour un text area. Au fait, l'utilisateur va ecrire dedans un code de langage de programmation que je suis entrai de mettre en place...C'est un petit projet: c'est juste un petit interpreteur un petit langage script koi

    je donne donc un exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    balayerVision;
    faire lancerObjet;
    Et donc il me faut de la completion pour que l'utilisateur s'y retrouve facilement (il y a +/- 100 mots clefs)

    Mais je souhaite savoir comment, en mettant un liste à droite de mon textArea, mettre des mots dedans lorsque l'utilisateur entre une lettre.

    imaginons que l'utilisateur veuille entrer " faire lancerObjet;"
    et qu'il ait deaj entré le mot faire.
    lorqu'il ecrit le "l" de lancerObjet, comment mettre dans la liste les mots commencants par "l" (pour rappel, ces mots proviennent d'une liste excel).

    Ensuite, lorsqu'il choisi un mot dans la liste (en locurence lancerObjet"), comment faire pour effacer les lettres deja entrées (ici le "l") et placer à sa place le nouveau mot.

    MERCI D'AVANCE POUR VOTRE AIDE.

    PS: je ne connais pas startsWith()? je vasi regarder comment il fct

  4. #4
    Membre actif Avatar de @ldehan
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 215
    Points : 278
    Points
    278
    Par défaut
    Citation Envoyé par Terminator
    je ne connais pas startsWith()? je vasi regarder comment il fct
    Citation Envoyé par javadoc
    public boolean startsWith(String prefix)

    Tests if this string starts with the specified prefix.

  5. #5
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    Salut !

    Regarde ca, ca pourrait être interessant
    http://www.jroller.com/page/swinguis...ext_completion

    +++
    Ju
    "Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
    Penser à svp

  6. #6
    Membre actif Avatar de @ldehan
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 215
    Points : 278
    Points
    278
    Par défaut
    Si tu penches pour le TextArea alors ce qui peut être pas mal et pas trop compliqué a codé c'est le truc suivant :

    quand l'utilisateur saisi un caractère, tu fais ton filtre et tu lui propose la fin du mot en le selectionnant, un peu comme ce que font les mobiles pour les SMS

    comme ca quand il retape une lettre, ca efface la fin du mot (qui était selectionnée) et on est reparti pour un tour de boucle.

    Pour ce qui est de ton fichier excel, tu sera obligé de charger ton dictionnaire en mémoire avant de toute facon. n'oublie pas que tu devras faire ton filtre a chaque caractère saisi, tu ne peux te permettre d'acceder a ce genre de fichier dans le temps imparti.

    si tu reste dans l'idée de la liste, va falloir afficher dans un panel sous la position du curseur et gérer le clic sur les mots qui seront dans des Labels ou quelquechose du genre

  7. #7
    Membre régulier
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2004
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2004
    Messages : 528
    Points : 99
    Points
    99
    Par défaut
    Vous etes trop forts Et tres rapides. MERCI

    sozie9372 : Merci pour le lien, il est super. Je vais le lire attentivement.

    @ldehan: ok, merci pour tes idéés...Elles sont tout simplement sublimes!!

    Mais un dernier probleme se pose: tu propose que le mot s'ecrive au fur et à mesure (comme les sms). Je trouve cette idée plus que géniale. Mais l'utilisateur peut entrer un mot qui n'existe pas!! Or, sur les sms c'est impssible (sauf si on met "epeler"). Ici, comme c'est de la programmation, l'utilisateur va utiliser aussi bien des mots de mon lexique que des variables qu'il crée!!!

    Donc je bloque à ce niveau là

  8. #8
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 125
    Points : 117
    Points
    117
    Par défaut ......
    Je te propose ceci..
    j'ai fait ca moi meme et ca marche bien..je pense que cette methode est tres ergonomique quand tu utilises un TextArea.
    mais ca prend legerement un peu plus de temps en code.


    La methode consiste globalement a afficher les mots possibles apres filtrage dans un JPopupMenu.
    Donc si l'user ne veut pas choisir parmi les mots que tu lui proposes il clique a l'exterieur du menu surgissant ou appuie simplement sur la touche Esc.
    Tout le monde est habitue a cela car beaucoup d'IDE l'utilisent.

    1-nous venons de resoudre le probleme de la liberte du mot a saisir.

    Au cas ou le mot que tu l'utilisateur veut,correspond a un mot dans la liste du JPopupMenu, il utilise les touches de directions et la touche Entree et ou la souris pour selectionner le mot qu'il veut.

    Le probleme est comment:
    "Comment replacer la portion du mot tape au clavier par le mot selectioone dans le popup menu?"

    Au fur et a mesure que tu tapes un mot, a chaque lettre, tu selectionnes la portion du mot qui est entrain d'etre tapee.
    Si par exemple, tu veux taper
    "Houdan",quand tu tapes H, H apparait selectionne.quand tu tapes o ensuite Ho apparait selectionne.et juste a cote le pop menu apparait et propose tous les mots commencant par Ho{Homme,Homicide,Houdan etc...}
    Si tu choisis le Houdan dans le pop menu, la portion de mot selectionnee va s'effacer et laissera place au String qui est selectionne.Dans notre cas Houdan.

    2-nous venons de resoudre le probleme de remplacement du mot ecrit par le mot-cle selectionne dans le popup menu.

    Un autre probleme persisterait quand meme!!!
    "comment savoir la portion de texte qu'il faudra selectionner?
    En d'autres termes comment faire savoir au programme le mot que je voudrais completer?"


    Simple , ca depend de la synthaxe de ton langage de programmation, tu peux decider de faire une completion juste apres le premier mot apres un espace blanc ou apres un point. "."
    Les IDE des langages oriente-objet propose une completion apres un point et apres la premiere qui succede un espace blanc.
    Donc pour reveinr a ton langage, d'apres ta synthaxe tu tapes ton marqueur, si je peux m'exprimer en ces termes.Une fois que tu connais ton marqueur, tu prends sa position et tu selectionnes toutes les lettres qui viennent ensuite tant que le menu surgissant apparait.

    en effet, il n'est aucune d'utilite de selectionner un mot que tu ne veux pas remplacer, et c'est seulement quand tu veux remplacer que tu affiches le menu surgissant des mots cles possibles.

    3-Nous venons de resoudre le probleme de selection de la portion de mots deja tapee pour faciliter son remplacement par le mot cle selectionne par l'user.
    Projets de développement en assembleur x86: http://membres.lycos.fr/cvslike/ ou http://thesheep.free.fr/decasm/

  9. #9
    Membre régulier
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2004
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2004
    Messages : 528
    Points : 99
    Points
    99
    Par défaut
    waaaaw, je suis blufé!!!
    MERCI, UN GRAND MERCI!!!

    Je vais utiliser tout ca. Si j'ai un probleme, ce post refera surface

    Encore merci à tous

  10. #10
    Membre régulier
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2004
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2004
    Messages : 528
    Points : 99
    Points
    99
    Par défaut
    Une derniere question avant que je debute:

    au fait, une fois que l'utilisateur a ecrit son code avec mon "langage". Lorsu'il appuie sur un bonton "Compiler", le programme transforme ce code en code java associé via un fichier excel (ou txt) qui est une sorte de lexique. Ce code est donc transformer dans un autre fichier .java

    Ce fichier créé java est alors compilé.

    Je voudrais donc:
    1/ savoir si il est possible de compiler directement (sans passer par un IDE). CAD dès qu'il appuie sur "compiler" , tout se fait en arriere plan (est-ce que la ligne de commande à utiliser fonctionne aussi bien sous xp que linux?

    2/ Si il y a des erreurs lors de la compilation, j'aimerais que l'utilisateur recoive un msg (dans un autre textArea par ex) avec les differentes lignes ou il y a des erreurs, mais les lignes ecrites avec mon code et pas les lignes java.

    Voila...je pense que ce probleme de compilation devient difficile à resoudre

    D'avance merci à tous

  11. #11
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    1) tu peux utiliser la ligne de commande indépendament de win/ux dès l'instant où les variables d'environnement sont correctement utilisée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Process p=Runtime.getRuntime.exec("javac "+monFichier);
    2) pour récupérer les errors affichées lors de 1), tu récupère la sortie erreur de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    BufferedReader br=new BufferedReader(new InputStreamReader(p.getInputStream()));
    , reste mainentant à détecter la ligne d'erreur dand ce que tu viens de récupérer puis à faire la conversion dans ton fichier d'origine.

  12. #12
    Membre régulier
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2004
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2004
    Messages : 528
    Points : 99
    Points
    99
    Par défaut
    Merci à toi

  13. #13
    Membre régulier
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2004
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2004
    Messages : 528
    Points : 99
    Points
    99
    Par défaut
    reste mainentant à détecter la ligne d'erreur dand ce que tu viens de récupérer puis à faire la conversion dans ton fichier d'origine.
    Si toutefois quelqu'un a une idée pour cette partie???
    C'est pas simple tout ca


    D'anvance merci à tous ceux qui vont y reflechir et à celui qui trouvera la solution (ou une des solution car j'imagine bien qu'il doit y avoir plusieurs soluces)

    MERCI

Discussions similaires

  1. Mettre du gras dans une zone de texte
    Par gontrand16 dans le forum IHM
    Réponses: 6
    Dernier message: 11/12/2012, 12h38
  2. Multi Format dans une zone de texte ou active x
    Par nowick dans le forum Access
    Réponses: 5
    Dernier message: 22/10/2005, 20h23
  3. incrementation d'un format texte dans une zone de texte
    Par frederic.go dans le forum Access
    Réponses: 6
    Dernier message: 18/10/2005, 14h47
  4. Code de séléctionnement dans une zone de texte
    Par ghyosmik dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 11/10/2005, 13h46
  5. Exclusion de caractere dans une zone de texte
    Par martsigo dans le forum Access
    Réponses: 7
    Dernier message: 23/08/2005, 20h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo