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

avec Java Discussion :

Valider par la touche entrée


Sujet :

avec Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 140
    Points : 31
    Points
    31
    Par défaut Valider par la touche entrée
    Bonjour, je voudrais savoir comment valider une saisie (ce qui va remplacer un bouton) en appuyant sur la touche entrée du clavier ?

    Merci d'avance.

  2. #2
    Membre confirmé Avatar de Mobius
    Profil pro
    none
    Inscrit en
    Avril 2005
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : none

    Informations forums :
    Inscription : Avril 2005
    Messages : 463
    Points : 558
    Points
    558
    Par défaut
    Dans quel contexte ?

    une saisie a la console ? (non, c'est déjà comme ca que ca marche)
    dans une appli web ? (non, normalement un formulaire web à déjà ce fonctionnement)
    une appli swing ou SWT ? dans ce cas il vaut mieux poser la question dans la bonne rubrique. A mon avis, si tel es ton problème, tu dois créer un listener que tu associra a ton champs. Ce listener doit "écouter" ce qui est saisie et valider le formulaire (ce qui est fait par ton bouton) lorsqu'il s'agit de la touche "Entrée".

  3. #3
    Membre expérimenté
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Points : 1 340
    Points
    1 340
    Par défaut
    bonjour,

    Il est vrai que la question manque de précision. Néanmoins il est probable que ce que tu cherche réside dans les AbstractAction.

    Tu définis une classe MonAction qui hérite de AbstractAction, qui possède un actionPerformed, dedans tu met le code qui gère ce que tu entends par "validation".

    Ensuite tu associe cette action a ton composant TextField.

    par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    monComposant.getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "MonAction");
    monComposant.getActionMap().put("MonAction", new MonAction());
    actionPerformed de ton AbstractAction sera alors appelé lorsque l'on appuiera sur ENTER.

    Voila.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 140
    Points : 31
    Points
    31
    Par défaut
    en faite, je veux ne pas être obliger de cliquer sur un bouton OK, je veux aussi pouvoir appuyer sur la touche entrée de mon clavier

  5. #5
    Membre extrêmement actif Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 814
    Points
    814
    Par défaut
    tu n'as pas lu le message juste au dessus du tiens ??

  6. #6
    Membre expérimenté
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Points : 1 340
    Points
    1 340
    Par défaut
    en faite, je veux ne pas être obliger de cliquer sur un bouton OK, je veux aussi pouvoir appuyer sur la touche entrée de mon clavier
    jojodu31 a raison, il me semble que l'indication que je t'ai donné correspond a ce que tu cherche, a moins que je t'ai mal compris.

    Cette méthode n'empêche pas l'utilisateur de cliquer sur OK, mais il ajoute un nouveau moyen de valider en Appuyant sur ENTER. Je crois que c'est cela que tu veux !

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 140
    Points : 31
    Points
    31
    Par défaut
    c'est exact

    Mais comment faire dans les classes je ne comprend pas, j'ai fait ça, mais c'est faux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class MonAction extends AbstractAction{
     
        public void actionPerformed(ActionEvent e) {
            e.getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "MonAction");
            e.getActionMap().put("MonAction", new MonAction());
        }
     
    }

    et je n'utiliserai pas un TextField mais un jButtonOK

  8. #8
    Membre extrêmement actif Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 814
    Points
    814
    Par défaut
    tu n'utilise pas ton jButton pour remplir tes champs je suppose...
    il doit bien y avoir des textFields qq part non ?

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 140
    Points : 31
    Points
    31
    Par défaut
    voici ma classe entièrement:
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
     
    import java.io.*;
    import java.util.logging.*;
    import javax.swing.JOptionPane;
     
    /*
     * Auth.java
     *
     * Created on 27 mai 2008, 08:50
     */
     
     
     
    /**
     *
     * @author  adminlocal
     */
    public class Auth extends javax.swing.JFrame {
     
        /** Creates new form Auth */
        public Auth() {
            initComponents();
     
            GestionSystemeGardien gest = new GestionSystemeGardien();
            gest.centrageFenetre(this);
     
        }
     
        /** This method is called from within the constructor to
         * initialize the form.
         * WARNING: Do NOT modify this code. The content of this method is
         * always regenerated by the Form Editor.
         */
        // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
        private void initComponents() {
     
            jLabel2 = new javax.swing.JLabel();
            jText_MDP = new javax.swing.JPasswordField();
            jLabel1 = new javax.swing.JLabel();
            jText_ID = new javax.swing.JTextField();
            jButtonOK = new javax.swing.JButton();
            jButtonAnnuler = new javax.swing.JButton();
     
            setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
     
            jLabel2.setText("Mot de passe:");
     
            jLabel1.setText("Nom d'utilisateur:");
     
            jText_ID.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jText_IDActionPerformed(evt);
                }
            });
     
            jButtonOK.setText("OK");
            jButtonOK.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jButtonOKActionPerformed(evt);
                }
            });
     
            jButtonAnnuler.setText("Annuler");
            jButtonAnnuler.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jButtonAnnulerActionPerformed(evt);
                }
            });
     
            org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(layout.createSequentialGroup()
                    .add(29, 29, 29)
                    .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                        .add(layout.createSequentialGroup()
                            .add(jLabel2)
                            .add(18, 18, 18)
                            .add(jText_MDP, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 111, Short.MAX_VALUE))
                        .add(layout.createSequentialGroup()
                            .add(jLabel1)
                            .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                            .add(jText_ID, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 110, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                        .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
                            .add(jButtonOK, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 69, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                            .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                            .add(jButtonAnnuler)))
                    .addContainerGap(36, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(layout.createSequentialGroup()
                    .addContainerGap()
                    .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                        .add(jLabel1)
                        .add(jText_ID, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                    .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                        .add(jLabel2)
                        .add(jText_MDP, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                    .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                        .add(jButtonAnnuler)
                        .add(jButtonOK))
                    .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
            );
     
            pack();
        }// </editor-fold>                        
     
        private void jButtonAnnulerActionPerformed(java.awt.event.ActionEvent evt) {                                               
            // TODO add your handling code here:
            System.exit(0);
    }                                              
     
        private void jText_IDActionPerformed(java.awt.event.ActionEvent evt) {                                         
            // TODO add your handling code here:
        }                                        
     
        private void jButtonOKActionPerformed(java.awt.event.ActionEvent evt) {                                          
            // TODO add your handling code here:
               try {
     
                identifier();                                        
            } catch (FileNotFoundException ex) {
                Logger.getLogger(Auth.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(Auth.class.getName()).log(Level.SEVERE, null, ex);
            }
        }                                         
     
        public void identifier() throws FileNotFoundException, IOException {
     
            String ID = jText_ID.getText().toUpperCase();
            String MDP = jText_MDP.getText().toLowerCase();
     
            String chaine = "";
            String fin = "";
            String temp = "";
            String fichier = "c://FicMdp.txt/";
     
            //lecture du fichier texte	
            InputStream ips = new FileInputStream(fichier);
            InputStreamReader ipsr = new InputStreamReader(ips);
            BufferedReader br = new BufferedReader(ipsr);
            String ligne;
            while ((ligne = br.readLine()) != null) {
                chaine += ligne + "\n";
            }
            int j = 1;
            int i = 0;
            String tabInfo[] = {"", ""};
            int numvar = 0;
            int nbmot = 0;
            while (j < chaine.length() + 1) {
                temp = chaine.substring(i, j);
                if (!temp.equals(" ") && (nbmot < 3)) {
                    fin += temp;
     
                } else {
                    tabInfo[numvar] = fin;
                    fin = "";
                    nbmot++;
                    numvar++;
                }
     
                i++;
                j++;
            }
            Crypter C = new Crypter();
            String l_ID = C.Decrypte(tabInfo[0], 2).toUpperCase();
     
            String l_MDP = C.Decrypte(tabInfo[1], 2).toLowerCase();
            if (ID.equals(l_ID) && MDP.equals(l_MDP)) {
                new Interface_Gardien().setVisible(true);
                this.setVisible(false);
            } else {//((!ID.equals("DRH") && !MDP.equals("admin"))) {
                JOptionPane.showMessageDialog(null, "Votre identifiant ou mot de passe est invalide", "Erreur", JOptionPane.ERROR_MESSAGE);
     
            }
     
     
        }
     
        /**
         * @param args the command line arguments
         */
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new Auth().setVisible(true);
                }
            });
        }
     
        // Variables declaration - do not modify                     
        private javax.swing.JButton jButtonAnnuler;
        private javax.swing.JButton jButtonOK;
        private javax.swing.JLabel jLabel1;
        private javax.swing.JLabel jLabel2;
        private javax.swing.JTextField jText_ID;
        private javax.swing.JPasswordField jText_MDP;
        // End of variables declaration                   
     
    }

  10. #10
    Membre extrêmement actif Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 814
    Points
    814
    Par défaut
    jText_MDP = new javax.swing.JPasswordField();

    jText_ID = new javax.swing.JTextField();
    Ce sont bien des TextComponent , et c'est sur ces 2 objets que tu dois mettre ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    jText_MDP.getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "MonAction");
    jText_MDP.getActionMap().put("MonAction", new MonAction());
     
    jText_ID.getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "MonAction");
    jText_ID.getActionMap().put("MonAction", new MonAction());

  11. #11
    Membre expérimenté
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Points : 1 340
    Points
    1 340
    Par défaut
    Voici un exemple complet :
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.event.ActionEvent;
    import java.awt.event.KeyEvent;
    import javax.swing.AbstractAction;
    import javax.swing.JComponent;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    import javax.swing.KeyStroke;
     
     
    @SuppressWarnings("serial")
    public class Go extends JFrame {
     
    	private JTextField txt = new JTextField();
    	private JLabel label = new JLabel();
     
    	public static void main(String[] args) {
    		new Go();
    	}
     
    	public Go() {
    		super();
     
    		txt.setPreferredSize(new Dimension(200,22));
    		label.setPreferredSize(new Dimension(200,22));
     
    		txt.getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "MonAction");
    		txt.getActionMap().put("MonAction", new MonAction());
     
    		JPanel p = (JPanel)getContentPane(); 
    		p.add(label, BorderLayout.NORTH);
    		p.add(txt, BorderLayout.SOUTH);
     
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    		this.pack();
    		this.setLocationRelativeTo(null);
    		this.setVisible(true);
    	}
     
     
    	private class MonAction extends AbstractAction { 
     
    		@Override
    		public void actionPerformed(ActionEvent ae) { 		
    			label.setText("ENTER pressed");
    	    } 
     
    	}
     
    }

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 140
    Points : 31
    Points
    31
    Par défaut
    mais à quoi correspond: label.setText("ENTER pressed");

    je vais avoir ENTER pressed qui va s'afficher dans mon label ?

  13. #13
    Membre extrêmement actif Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 814
    Points
    814
    Par défaut
    exact

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 140
    Points : 31
    Points
    31
    Par défaut
    mais je ne veux pas qu'il y ait quelque chose qui s'affiche dans mes label moi je veux juste valider en appuyant sur entrée

  15. #15
    Membre extrêmement actif Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 814
    Points
    814
    Par défaut
    le code de visiwi est JUSTE UN EXEMPLE !...

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 140
    Points : 31
    Points
    31
    Par défaut
    oui mais comment je dois faire dans mon cas ?

  17. #17
    Membre expérimenté
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Points : 1 340
    Points
    1 340
    Par défaut
    Hum...

    Effectivement, c'est un exemple
    Le label n'est là que pour te montrer visuellement que l'actionPerformed est appelé lorsque tu appui sur ENTER. C'est précisément dans cette méthode que tu doit mettre le code qui "valide".

    Essai de comprendre cet exemple (qui n'est tout de même pas très complexe).

    La méthode actionPerformed de l'instance de ma classe MonAction est appelé lorsque tu appui sur ENTER.
    Tu reli ton JTextField a cette classe MonAction par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    monTextField.getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "MonAction");
    monTextField.getActionMap().put("MonAction", new MonAction());

Discussions similaires

  1. Clavier inactif après validation UserForm par la touche entrée
    Par melouille56 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/08/2010, 11h45
  2. Pas de validation du form par la touche Entrée : sous IE uniquement
    Par Rose95 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 08/12/2009, 12h16
  3. Valider par la touche "Entrée"
    Par sango85 dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 30/04/2008, 12h28
  4. [formulaire] Modifier l'action engendrée par la touche [Entrée]
    Par FrankOVD dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 12/05/2006, 17h58
  5. valider le contenu d'un textbox par la touche entrée
    Par camilla dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 07/10/2005, 16h02

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