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

Composants Java Discussion :

Autocompletion swingx avec JComboBox: comment inhiber en saisie


Sujet :

Composants Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 30
    Points : 45
    Points
    45
    Par défaut Autocompletion swingx avec JComboBox: comment inhiber en saisie
    Bonjour,

    je réalise une application du type dictionnaire. J'initialise la liste du combo avec la liste de mots et utilise AutoCompleteDecorator comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    textEnter.setModel(new ListComboBoxModel<String>(entryList));
    AutoCompleteDecorator.decorate(textEnter);
    Dans le text editor du combo, quand je tape un mot, j'ai bien le mécanisme d'autocomplétion qui joue et je vois la liste des mots qui auto-complètent ma saisie qui se déroulent dans le popup. Je peux cliquer sur un mot et utiliser l'événement pour afficher les sens du mot dans un composant voisin. Parfait!

    Cependant, j'ai un problème, si je veux saisir un mot qui n'est pas dans la liste pour l'ajouter à celle-ci, je me trouve en face de deux cas dont l'un me pose problème :

    - soit, j'ai épuisé le mécanisme d'auto-complétion car ma saisie est suffisamment longue pour qu'aucun mot de la liste ne corresponde plus et je peux utiliser ma saisie pour créer un nouveau mot dans la liste. Parfait encore.

    -soit le mot que je veux créer est plus court qu'un mot de la liste qui commence par ma saisie et là, problème, je ne peux limiter ma saisie car la partie auto-complétive reste affichée en ombrage. Ce qu'il faudrait c'est que je puisse entrer et ajouter ce mot plus court à la liste.

    J'espère être assez clair car j'ai besoin d'aide avancer.

    Merci.

  2. #2
    Membre actif Avatar de DarkMolo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    207
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Maroc

    Informations forums :
    Inscription : Juillet 2006
    Messages : 207
    Points : 277
    Points
    277
    Par défaut
    Bonjour,

    Qu'est-ce qui se passe quand tu tapes sur Echap, normalement ça devrait ne garder que ton texte et arrêter le méchanisme d'auto-complétion !

    Au cas où, j'ai aperçu dans le code de la classe AutoCompleteDecorator :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int keyCode = keyEvent.getKeyCode();
    // don't popup when the user hits shift,ctrl or alt
    if (keyCode==keyEvent.VK_SHIFT || keyCode==keyEvent.VK_CONTROL || keyCode==keyEvent.VK_ALT) return;
    // don't popup when the user hits escape (see issue #311)
    if (keyCode==keyEvent.VK_ESCAPE) return;
    Apparemment même SHIFT ALT et CTRL devrait faire l'affaire.
    Certified SCJP 5.0 / SCWCD 5.0 / SCEA 5.0
    C'est une grande folie de vouloir être sage tout seul.
    Duc de La Rochefoucauld

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 30
    Points : 45
    Points
    45
    Par défaut
    Merci pour ta réponse rapide.
    Ça semble fonctionner avec ESC. Il y a cependant un petit désagrément c'est que le texte à venir dans l'auto-complétion reste affiché ce qui ne donne pas à l'utilisateur l'impression qu'il a bien saisi ce texte raccourci (où l'auto-complétion est bloquée). Néanmoins la lecture du combo donne bien le texte raccourci.

    Ce qui gène aussi c'est quand je veux filtrer les caractères saisis avec par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    textEnter.getEditor().getEditorComponent().addKeyListener(new KeyAdapter() {
                public void keyTyped(KeyEvent e) {
                    char c = e.getKeyChar();
                    if ((!(Character.isAlphabetic(c) || c=='-' || c=='(' || c==')')) && (c != KeyEvent.VK_BACK_SPACE)) {
                      e.consume();  // ignore event
                    }
               }
         //   });
    ça ne marche plus.

    Par ailleurs, mais là c'est une autre question quand on tape une minuscule et qu'il existe déja un mot avec cette lettre en majuscule, tous les mots en majuscules viennent s'intercaler dans le popup. C'est assez désagréable comme fonctionnement.

    Quoi qu'il en soit j'ai avancé. Merci encore

Discussions similaires

  1. comment sécuriser la saisie en C avec scanf?
    Par bouraouimed dans le forum Linux
    Réponses: 4
    Dernier message: 08/09/2010, 09h51
  2. Réponses: 1
    Dernier message: 18/08/2010, 18h33
  3. Réponses: 2
    Dernier message: 07/11/2008, 17h34
  4. Réponses: 4
    Dernier message: 30/08/2006, 18h15
  5. [JComboBox] editable avec % affiché en fin de saisie
    Par tomburn dans le forum Composants
    Réponses: 6
    Dernier message: 27/04/2005, 17h41

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