118 votes

Détecter la pression d'entrée dans un JTextField

Est-il possible de détecter quand quelqu'un appuie sur Enter tout en tapant dans un JTextField en java ? Sans avoir à créer un bouton et à le définir comme bouton par défaut.

186voto

camickr Points 137095

Un JTextField a été conçu pour utiliser un ActionListener, tout comme un JButton. Voir la méthode addActionListener() de JTextField. Désormais, l'événement est déclenché uniquement lorsque la touche Entrée est utilisée. L'avantage supplémentaire est que vous pouvez partager l'écouteur avec un bouton même si vous ne voulez pas faire de ce bouton un bouton par défaut.

1 votes

D'accord. Une solution plus élégante que la mienne, dans le cas général.

0 votes

@camickr est un expert des balançoires Java

27voto

kyorilys Points 111
JTextField function=new JTextField(8);   
function.addActionListener(new ActionListener(){

                public void actionPerformed(ActionEvent e){

                        //statements!!!

                }});

tout ce que vous avez à faire est d'ajouter un actionListener au JTextField comme ci-dessus ! Une fois que vous aurez appuyé sur la touche "Entrée", l'action exécutera ce que vous voulez au moment de la déclaration !

20voto

Ionică Bizău Points 14484

Ajouter un événement pour KeyPressed .

private void jTextField1KeyPressed(java.awt.event.KeyEvent evt) {
  if(evt.getKeyCode() == KeyEvent.VK_ENTER) {
      // Enter was pressed. Your code goes here.
   }
}

0 votes

-1 :( Les KeyListeners sont bien trop bas du point de vue de Swing. Utilisez l'API qui est destinée à être utilisée avec Swing :-)

0 votes

Pour une raison quelconque, ce message est le plus positif voté par les utilisateurs anonymes :-) Oui, c'est la solution que j'ai trouvée. Merci pour les commentaires !

0 votes

@nIcEcOw : Pourquoi est-ce incorrect ? L'écouteur d'action n'a-t-il pas une entrée ActionEvent plutôt qu'une entrée KeyEvent ? Comment pouvez-vous vérifier si l'ActionEvent était une pression sur la touche Entrée ? La seule méthode pertinente semble être getID(), qui indique simplement quel type d'action a été effectué... Je suis perdu.

6voto

Kos Points 29125

Oui, vous pouvez ajouter un écouteur d'événements dans le champ de texte.

Voir le exemple de code .

Vous pouvez vérifier si la clé est Enter en comparant la valeur de event.getKeyCode() avec l'une des constantes dans KeyEvent .

0voto

greg Points 11

Ajoutez d'abord une commande d'action sur JButton ou JTextField par :

JButton.setActionCommand("name of command");
JTextField.setActionCommand("name of command");

Ajoutez ensuite un ActionListener à JTextField et JButton.

JButton.addActionListener(listener);
JTextField.addActionListener(listener);

Après cela, sur votre implémentation de l'ActionListener, écrivez

@Override
public void actionPerformed(ActionEvent e)
{
    String actionCommand = e.getActionCommand();

    if(actionCommand.equals("Your actionCommand for JButton") || actionCommand.equals("Your   actionCommand for press Enter"))
    {
        //Do something
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X