Détecter l'entrée de la presse dans le component swing jtextfield
Est-il possible de détecter quand quelqu'un appuie sur Entrée lors de la saisie dans un component swing jtextfield en java? Sans avoir à créer un bouton et de le définir comme valeur par défaut.
Vous devez vous connecter pour publier un commentaire.
Un
JTextField
a été conçu pour utiliser unActionListener
comme unJButton
est. Voir laaddActionListener()
méthode deJTextField
.Par exemple:
Maintenant l'événement est déclenché lorsque l' Entrée clé est utilisée.
Aussi, un avantage supplémentaire est que vous pouvez partager à l'auditeur avec un bouton, même si vous ne voulez pas faire le bouton, le bouton par défaut.
Note, cet exemple utilise une
Action
, qui met en œuvreActionListener
parce queAction
est un API plus récente avec plus de fonctionnalités. Par exemple, vous pouvez désactiver leAction
qui permettrait de désactiver l'événement pour le champ de texte et le bouton.tout ce que vous devez faire est de addActionListener à l'component swing jtextfield, comme ci-dessus! Après que vous appuyez sur Entrée l'action sera effectuée ce que vous voulez à la déclaration de!
Ajouter un événement pour
KeyPressed
.KeyBindings
, tels que, l'accent liées, copier/coller liées et beaucoup de beaucoup plus. Il est à éviter, pour des tâches insignifiantes, comme, comme demandé dans l'OP.Voulez-vous faire quelque chose comme cela ?
D'abord ajouter une action de commande sur JButton ou component swing jtextfield par:
Puis ajouter ActionListener à la fois component swing jtextfield et JButton.
Après que, vous ActionListener la mise en œuvre d'écrire
Les autres réponses (y compris les acceptée) sont bonnes, mais si vous utilisez déjà Java8, vous pouvez effectuer les opérations suivantes (dans des délais plus courts, les plus récents en cours):
Que l'on a accepté de répondre à dit, vous pouvez tout simplement réagir avec une
ActionListener
, qui attrape la Touche Entrée.Cependant, mon approche prend avantage de la fonctionnelle de concepts qui a été introduit dans Java 8.
Si vous souhaitez utiliser la même action, par exemple pour un bouton et le component swing jtextfield, vous pouvez effectuer les opérations suivantes:
Si plus d'explication est nécessaire, s'il vous plaît laissez-moi savoir!
Si vous souhaitez définir un bouton par défaut dans un component swing jtextfield entrer, vous devez faire ceci:
Il est [0] parce qu'un bouton a beaucoup d'actions, mais, normalement, n'a qu'un seul (ActionPerformed).
À la logique d'écriture pour "Enter appuyez sur la touche' dans
JTextField
, il est préférable de garder la logique à l'intérieur de lakeyReleased()
bloc au lieu dekeyTyped()
&keyPressed()
.KeyListeners
sont trop faible niveau deSwing
's de la perspective. L'utilisation de l'API qui est destiné à être utilisé avecSwing
🙂Suffit d'utiliser ce code: