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 :

Problème de saisie : JSpinner


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 14
    Par défaut Problème de saisie : JSpinner
    Bonjour à tous,

    je suis sur ce problème depuis des heures, et n'ayant toujours pas trouvé la solution, je me tourne vers vous.

    Donc voilà, j'ai un JSpinner qui a pour modèle une SpinnerListModel qui contient elle même une ArrayList de String (pour info, des adresses mails).

    Après avoir à peu près le compris le fonctionnement, je suis sur le casse-tête qu'est la saisie. Mon problème de base est que j'aimerais que l'on puisse modifier directement le champ en saisie, seulement je me suis rapidement rendu compte que la simple saisie ne sauvegarde pas la valeur pour autant. J'ai donc tant bien que mal réussi à ajouter un des Listener pour notifier la saisie.

    La solution que j'ai retenue a donc été de mettre un KeyListener sur le JTextField de l'Editor du JSpinner, KeyListener que je dois changer lorsque le ChangeListener sur le JSpinner détecte un changement (vous suivez ?), je suppose.

    Le vrai problème, que je ne parviens pas à résoudre, est que lorsque j'exécute la méthode commitEdit() du JSPinner, il me remet la première valeur, et non celle saisie. J'ai essayé de contourner cela en assignant à mon JSpinner par la méthode setValue(Object value) la valeur du JTextField qui est donc la source de l'événement KeyListener. Et là, la méthode setValue déclenche une IllegalArgumentExcepetion, ce que je ne comprends pas puisque ma liste contient bien des chaînes

    Bon c'est un gros pavé, mais je voulais expliquer mon problème le plus clairement possible. Donc si quelqu'un a la solution a l'un des problèmes que j'ai énoncés, et que ça me permet de réussir ce que je veux (sauvegarder la saisie dans le JSpinner), je lui en serais très reconnaissant !

    Si ça peut aider, voici un extrait de code qui délcenche l'exception IllegalArgumentExcepetion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public void keyReleased(KeyEvent e) {
    	try {
    		js.setValue("test");
    		js.commitEdit();
    		System.out.println("sauvé : "+js.getValue().toString());
    	} catch (ParseException pe) {
    		pe.printStackTrace();
    	}
     
    }

    EDIT :

    Bon, en attendant mieux, j'ai rusé.
    En attributs, j'ai ajouté une ArrayList qui est une copie de celle contenue dans le JSpinner, et un entier qui représente l'index actuel (dans le JSpinner).
    Du coup, je mets à jour l'index lorsque le JSpinner change d'état (lorsque l'on clique sur les flèches) et je mets à jour en même temps le JTextField du JSpinner en copiant la valeur de mon ArrayList attribut trouvée à l'index précédemment modifié.

    Lors d'une saisie, je modifie la chaine contenue à l'index attribut en copiant la valeur trouvée dans le JTextField.

    L'inconvénient, c'est que je vais devoir faire autant d'attributs que je veux de JSpinner (2 fois en plus en fait, en gérant les index) et également beaucoup de classes de Listeners... J'aimerais bien éviter ça, donc si quelqu'un a mieux, je suis preneur !

  2. #2
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 14
    Par défaut
    Bon, ayant réussi à contourner mon problème, je vais mettre le sujet en résolu.

    Si ça intéresse quelqu'un de savoir comment, j'essayerai de m'expliquer, mais globalement la réponse est dans mon EDIT.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [TMaskEdit] Problème de saisie de date
    Par Pill_S dans le forum Delphi
    Réponses: 4
    Dernier message: 10/07/2006, 16h36
  2. problème de saisie
    Par lastrecrue dans le forum C
    Réponses: 8
    Dernier message: 03/07/2006, 18h04
  3. Richeditctrl - problème de saisie clavier
    Par KO-Tek dans le forum MFC
    Réponses: 5
    Dernier message: 20/12/2005, 11h15
  4. Problème de saisie de caractères
    Par XantaX dans le forum Assembleur
    Réponses: 3
    Dernier message: 07/12/2005, 15h37
  5. Problème de saisie avec le "."
    Par Pouf dans le forum ASP
    Réponses: 10
    Dernier message: 18/03/2005, 15h27

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