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

AWT/Swing Java Discussion :

Pb de capture d'évènement dans un JTextArea!


Sujet :

AWT/Swing Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Pb de capture d'évènement dans un JTextArea!
    Bonjour a tous!
    J'aurai besoin de votre aide pour un petit problème.
    Voilà,j'ai un JTextArea dans lequel j'écris du text grace au clavier.
    Lorsque j'appuis sur Entrée, je fais quelques opérations sur le text
    puis je l'efface grace à la methode setText("") ou setText(null).
    Le resultat est que le texte s'efface puis un retour à la ligne est effectué.
    Ma question est donc: comment empécher ce retour a la ligne?
    (Le problème vient de l'appui sur la touche Entrée car lorsque j'appelle la methode setText() après avoir appuyer sur un bouton, le résultat obtenu est celui que je cherche. Je crois que l'évènement est capturé, les opérations sont effectuées puis l'évènement est transmis au JTextArea qui effectue donc un saut de ligne.)
    Voici le code résumant mon problème:

    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;

    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JTextArea;

    public class AireText extends JFrame implements KeyListener,ActionListener{
    private static final long serialVersionUID = 1L;
    JTextArea textAir;
    JButton suppr;

    public AireText(){
    super();
    setBounds(0,0,200,200);
    textAir=new JTextArea(7,10);
    suppr=new JButton("Supprimer");
    textAir.addKeyListener(this);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    JPanel pane=new JPanel();
    pane.add(textAir);
    pane.add(suppr);
    suppr.addActionListener(this);
    setContentPane(pane);
    setVisible(true);
    }

    public void keyPressed(KeyEvent evt) {
    int source=evt.getKeyCode();
    if (source==10)//10 est le KeyCode de la touche "entrée".
    textAir.setText(null);

    }

    public void actionPerformed(ActionEvent arg0) {
    textAir.setText("");
    textAir.grabFocus();
    }

    public static void main(String[] arg){
    new AireText();
    }

    public void keyTyped(KeyEvent arg0) {}

    public void keyReleased(KeyEvent arg0) {}
    }

  2. #2
    Membre éclairé Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Points : 680
    Points
    680
    Par défaut
    Il est recommandé de ne pas utiliser grabFocus mais plutôt requestFocusInWindow...

    T'as essayé de changer ton textAir.setText(null); par textAir.setText(""); dans ton keyPressed?
    Pour chaque langage existe une faq / N'oubliez pas de lire les règles du forum

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Oui, g déjà essayer de remplacer setText(null) pr setText("") mais rien n'y change...

    Ok pour requestFocusInWindow, je vais regarder les différences,merci.

  4. #4
    Membre averti Avatar de let_me_in
    Inscrit en
    Mai 2005
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 441
    Points : 437
    Points
    437
    Par défaut
    bon c'est un peu du bricolage , mais j'espere que ça t'aidera.
    apres la ligne tu rajoute la ligne
    qui dit Dieu n'existe pas dis que les programmes tournent sans processeur.

  5. #5
    Membre averti Avatar de let_me_in
    Inscrit en
    Mai 2005
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 441
    Points : 437
    Points
    437
    Par défaut
    c'est tjrd moi,
    avant d'essayer mon bricolage, essaye de mettre ton code dans keyReleased() au lieu de keyPressed();
    qui dit Dieu n'existe pas dis que les programmes tournent sans processeur.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Pb résolu!!!!!!
    Merci beaucoup Let_me_in, j'ai simplement déplacé mon code dans KeyReleased et tous marche nickel....
    Merci!!!!!

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Pour info, rajouter textAir.insert("",0); dans KeyPressed() ne change rien
    Merci encore!!

  8. #8
    Membre confirmé Avatar de rvfranck
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 746
    Points : 534
    Points
    534
    Par défaut
    Salut,
    Merci, j'avais le même problème, je voudrais exécuter le code du JButton après une frappe sur entrée dans le JTextArea. Mais il n'y aurait pas une autre manière de faire? du genre comme avec les JTextField (getRootPane().setDefaultButton(lebouton)?

    Merci
    "Celui qui reconnaît consciemment ses limites est le plus proche de la perfection." Johann Wolfgang

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 147
    Points : 102
    Points
    102
    Par défaut :D
    Merci pour ce post, j'avais le même problème et effectivement, je n'avais pas pensé au keyReleased.

    Merci encore.

    dest.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 12/12/2010, 11h08
  2. Réponses: 3
    Dernier message: 08/10/2010, 12h42
  3. Réponses: 10
    Dernier message: 21/02/2007, 20h16
  4. Capture d'exception dans un constructeur
    Par declencher dans le forum Composants VCL
    Réponses: 8
    Dernier message: 03/02/2004, 12h52
  5. Modifier un événement dans le code
    Par HT dans le forum Langage
    Réponses: 6
    Dernier message: 20/06/2003, 09h46

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