Est-il possible de détecter quand quelqu'un appuie sur Enteren tapant un JTextField en java? Sans avoir à créer un bouton et à le définir par défaut.
la source
Est-il possible de détecter quand quelqu'un appuie sur Enteren tapant un JTextField en java? Sans avoir à créer un bouton et à le définir par défaut.
A a JTextField
été conçu pour utiliser un ActionListener
comme un JButton
est. Voir la addActionListener()
méthode de JTextField
.
Par exemple:
Action action = new AbstractAction()
{
@Override
public void actionPerformed(ActionEvent e)
{
System.out.println("some action");
}
};
JTextField textField = new JTextField(10);
textField.addActionListener( action );
Maintenant, l'événement est déclenché lorsque la Enterclé est utilisée.
En outre, un avantage supplémentaire est que vous pouvez partager l'auditeur avec un bouton même si vous ne souhaitez pas en faire un bouton par défaut.
JButton button = new JButton("Do Something");
button.addActionListener( action );
Notez que cet exemple utilise un Action
, qui implémente ActionListener
car Action
est une API plus récente avec des fonctionnalités supplémentaires. Par exemple, vous pouvez désactiver le Action
qui désactiverait l'événement à la fois pour le champ de texte et le bouton.
tout ce que vous avez à faire est d'ajouterActionListener au JTextField comme ci-dessus! Après avoir appuyé sur, Enterl'action exécutera ce que vous voulez à l'instruction!
la source
Ajoutez un événement pour
KeyPressed
.la source
KeyListeners
présentent de nombreuses lacunes, qui sont dans une plus grande mesure combléesKeyBindings
, telles que la mise au point, le copier / coller et bien d'autres. Il est à éviter, pour des tâches triviales, telles que, comme demandé dans OP.Voulez-vous faire quelque chose comme ça?
la source
Ajoutez d'abord la commande d'action sur JButton ou JTextField en:
Ajoutez ensuite ActionListener à JTextField et JButton.
Après cela, sur votre implémentation ActionListener, écrivez
la source
Les autres réponses (y compris celles acceptées) sont bonnes, mais si vous utilisez déjà Java8, vous pouvez faire ce qui suit (d'une manière plus courte et plus récente):
Comme le dit la réponse acceptée, vous pouvez simplement réagir avec un
ActionListener
, qui attrape la touche Entrée.Cependant, mon approche tire parti des concepts fonctionnels qui ont été introduits dans Java 8.
Si vous souhaitez utiliser la même action, par exemple pour un bouton et le JTextField, vous pouvez effectuer les opérations suivantes:
Si des explications supplémentaires sont nécessaires, veuillez me le faire savoir!
la source
Si vous souhaitez définir une action de bouton par défaut dans une entrée JTextField, vous devez le faire:
C'est [0] parce qu'un bouton peut avoir beaucoup d'actions, mais n'en a normalement qu'une (ActionPerformed).
la source
Pour chaque champ de texte de votre cadre, appelez la méthode addKeyListener. Ensuite, implémentez et remplacez la méthode keyPressed, comme d'autres l'ont indiqué. Vous pouvez maintenant appuyer sur Entrée à partir de n'importe quel champ de votre cadre pour activer votre action.
la source
Pour écrire une logique pour «Enter press»
JTextField
, il est préférable de conserver la logique à l'intérieur dukeyReleased()
bloc au lieu dekeyTyped()
&keyPressed()
.la source
KeyListeners
Sont bien trop bas duSwing
point de vue de. Utilisez l'API qui est censée être utilisé avecSwing
:-)Utilisez simplement ce code:
la source