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 :

Contrôle de saisie sur une perte de focus d'une JTextfield


Sujet :

Composants Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 13
    Points : 6
    Points
    6
    Par défaut Contrôle de saisie sur une perte de focus d'une JTextfield
    Bonjour tout le monde,

    Voilà, j'ai un petit souci : j'aimerais créer un contrôle de saisie dans une JTextField. Je vous livre mon code mais je n'arrive pas à récupérer le texte du composant (la JTextField) qui déclenche l'évenement focusLost....

    Mon code est celui-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
     
    public class addJTextField extends JFrame
    {
        private JTextField textField;
     
        public addJTextField(Container container) 
        {
            textField = new JTextField(10);
            textField.setVisible(true);
            textField.setEditable(true);
            container.add(textField);
     
            TextEcout ctrlSaisie = new TextEcout();
            textField.addFocusListener(ctrlSaisie);
        }
     
        private class TextEcout implements FocusListener 
        {
            public void focusLost(FocusEvent e) 
            {
                if ((int) e.getComponent().gettext < 1)  :?: 
                {
                    JOptionPane.showMessageDialog(null,"Erreur de saisie");
                }
            }
            public void focusGained(FocusEvent e) 
            {
            }
        }  
    }
    Auriez-vous une solution à me proposer ?
    Je suis hyper débutant en swing, alors soyez indulgent avec moi

    Christophe

  2. #2
    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 !
    Alors si j'ai bien compris, tu veux que lorsque ton txtField perd le focus, il y ait un traitement (genre un test) sur le texte saisi ?
    Si c'est ca, voici un pti bout de code qui devrait t'aider...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
            monTextField.addFocusListener(new FocusListener() {
                public void focusLost(FocusEvent e) {
     // ici tu testes ton texte... La longueur, les caractères saisis...
                    if (monTextField.getText().length() < 8) {
                         System.out.println("eh beh c'est pas bon là !");
                    }
                }
     
                public void focusGained(FocusEvent e) {
                }
            });
    +++
    Ju
    PS : Au fait :
    "Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
    Penser à svp

  3. #3
    Futur Membre du Club
    Inscrit en
    Août 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Merci sozie,

    Mais je préfère dissocier mon évènement de l'objet appelant (ici, la JTextField).
    J'ai trouvé ceci, qu'en penses-tu ? Est-ce prore?

    J'ai commenté...

    Et cette fois, je n'oublie pas les balises de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
     
    public class addJTextField extends JFrame
    {
        private JTextField textField;
     
        public addJTextField(Container container) 
        {
        	textField = new JTextField(10);
        	textField.setVisible(true);
        	textField.setEditable(true);
            container.add(textField);
     
            TextEcout ctrlSaisie = new TextEcout(); // Définition du FocusListener qui sera attaché à la JTextField
            textField.addFocusListener(ctrlSaisie); // Ajoute un contrôle de saisie sur perte de focus
        }
     
        private class TextEcout implements FocusListener
        {
    	    public void focusLost(FocusEvent e)
    	    {
    	    	Object Donnees = e.getSource(); // On récupère l'objet appelant
    	    	JTextField champ = (JTextField)Donnees; // On le caste en JTextField
     
    	    	// Et on effectue nos contrôles de saisie
    	    	if (Integer.parseInt(champ.getText()) < 1) 
    	        {
    	        	JOptionPane.showMessageDialog(null,"Erreur de saisie");
    	        	champ.setText("");
    	        	e.setSource(champ);
    	        }
    	    }
    	    public void focusGained(FocusEvent e) 
    	    {
    	    }
        }  
    }
    Merci encore,

    Christophe

  4. #4
    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
    J'ai quelques remarques...
    Je suppose que ton utilisateur doit saisir un nombre >=1 dans ta zone...
    Si tel est le cas: Integer.parseInt(uneChaine) peut générer une exception si la chaine saisie n'est pas un nombre entier. Je te conseille donc un petit try{} catch(){} autour.
    Si tu veux tester la longueur de ta chaine, il faut utiliser champ.getText().length().
    Et une petite question... : A quoi sert le container que tu passes en paramètre de ton constructeur ?
    "Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
    Penser à svp

Discussions similaires

  1. Réponses: 6
    Dernier message: 17/12/2010, 18h05
  2. [2.0] Perte de focus d'une fenêtre
    Par mister3957 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 29/03/2007, 12h19
  3. contrôle de saisie sur un espace
    Par oceane751 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 12/01/2006, 12h04
  4. Comment détecter la perte de focus d'une fenêtre
    Par Leviathan_72 dans le forum Windows
    Réponses: 5
    Dernier message: 31/12/2005, 00h22
  5. excel -> test lors de la perte du focus d'une cellule
    Par greg778 dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 26/09/2005, 17h26

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