2017-03-04 2 views
0

J'essaye d'ajouter un KeyListener à mon JFrame et la clef pressée fera tout le code dans une classe de ActionListener.Keylistener de JFrame avec actionlistener

Exemple:

Quand j'appuyez sur F1, il déclenche la classe ActionListener. Faire toutes les instructions.

Une aide? Merci d'avance.

Répondre

1

Ne pas avoir un KeyListener «appel» un ActionListener. Créez plutôt une méthode séparée avec toutes les instructions et faites appel à KeyListener et à ActionListener par la même méthode.

Également dans cette situation, n'utilisez pas un KeyListener qui se comportera de façon capricieuse lorsque la mise au point du clavier peut changer, et favorisera plutôt l'utilisation de Key Bindings. La touche enfoncée fera tout le code dans une classe ActionListener.

1

Au lieu d'utiliser un ActionListener, vous pouvez utiliser un Action. Un Action est fondamentalement identique à un ActionListner, mais vous pouvez définir des propriétés supplémentaires qui le rendent plus facile à utiliser avec le clavier. Lire la section du tutoriel Swing sur How to Use Actions pour plus d'informations et des exemples de travail. En remarque, les composants Swing sont conçus pour utiliser des actions.

Une fois que vous créez le Action vous avez différentes options:

  1. Vous pouvez ajouter le Action à un JMenuItem et si vous avez défini la touche « accélérateur », puis la Action sera appelée automatiquement lorsque la touche F1 est pressé. Si vous n'utilisez pas un JMenuItem, vous devez lier manuellement le KeyStroke au Action manuellement. Voir la section du tutoriel Swing sur [Comment créer et supprimer des liaisons de touches] pour les bases de l'ajout manuel d'une liaison (http://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html#howto).