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 :

Remplir un Jtextield a partir de boutons


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 68
    Par défaut Remplir un Jtextield a partir de boutons
    Bonjour à tous,

    Voilà, dans le cadre d'un developpement de jeu de boggle en java, j'ai une matrice de JButton contenant des lettres, et un JtextField.

    Pour constituer un mot, on peu soit cliquer sur les JButton, soit Rentrer la lettre dans le JtextField. Seulement, les deux sont "synchroniser", ainsi, lorsque je clic sur des JButton, ça doit m'ajouter/supprimer les lettres dans le JtextField. De même, lorsque je rentre une lettre dans le JtextField, ca doit colorier la grille.

    Après avoir cherché, j'ai utilisé un DocumentListener. Ainsi, lorsque je clic sur un bouton, je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    monField.setText(monField.getText()+maLettre)

    Le problème est alors que je passe par la méthode removeUpdate puis insertUpdate (le textfield se vide pour se re-remplir), ce qui fait que je ne peux pas bien gérer mes actions pour la suite.

    Ma question est alors : est-il possible de simuler les insert et remove comme quand on les fait au clavier ? (je veux dire, quand on ecrit dans un textField, a chaque fois qu'on rentre une lettre, ca fait bien un insert, et quand on appiu sur "retour arrière", ca fait bien un remove)...

    Par avance, merci !

  2. #2
    Membre émérite Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Par défaut
    salut,
    pour l'insertion, tu peux utiliser la méthode insertString de la classe Document au lieu de setText(..), un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    taTextField.getDocument().insertString(taTextField.getCaretPosition(), lettreAInserer, null);
    cela fait appel directement à insertUpdate

    pour la suppression, tu fais appel à la méthode remove de la même classe Document
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    taTextField.getDocument().remove(taTextField.getCaretPosition()-1, 1);
    cela fait appel directement à removeUpdate

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 68
    Par défaut
    Bonjour et merci pour cette réponse qui en effet fonctionne.
    Merci bien

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 68
    Par défaut
    Je pensais que c'etait résolu mais voici une extension à mon probleme.

    Grace au code proposé par herch, que ce soit à l'aide du clavier, ou à l'aide du Jbutton, je passe forcement par insertUpdate et removeUpdate.

    Ainsi, j'ai besoin de savoir si il s'agit d'un clic sur le Jbutton, ou d'une entré au clavier.

    Je suis actuellement à la recherche d'une solution, et forcement si quelqu'un aurait la solution, ce serait super. Merci beaucoup par avance.

  5. #5
    Membre émérite Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Par défaut
    salut,
    c'est pas très compliqué. tu définis dans ton programme une variable int nommé par exp sourceInsertion, puis tu définis deux constantes int BOUTON = 0 et TEXT_FIELD = 1, et dans le code du bouton, tu met sourceInsertion = BOUTON, et puis tu ajoutes un keylistener à ta textfield, et tu mets dans les méthodes du listener sourceInsertion = TEXT_FIELD.
    voilà, c'est juste une proposition

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 68
    Par défaut
    Merci beaucoup Herch ! Je suis pas sûr d'avoir compris exactement ce que tu proposes, mais cela ma quand même mis sur la voie et j'ai pu résoudre mon problème !

    En fait je test dans mon insertUpdate la valeur de sourceInsertion et j'agit en fonction

    Merci beaucoup.

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

Discussions similaires

  1. Remplir deux tables a partir d'un formulaire
    Par Treuze dans le forum Access
    Réponses: 2
    Dernier message: 07/01/2006, 20h51
  2. Remplir deux listes select à partir d'une autre
    Par Raduris dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 23/11/2005, 15h29
  3. lien vers un fichier à partir d’un bouton
    Par amelhog dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 10/08/2005, 15h39
  4. Réponses: 5
    Dernier message: 05/07/2005, 20h25
  5. remplir des tables a partir de fichiers TXT
    Par jeremie dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 10/03/2004, 14h50

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