2017-10-17 3 views
0

J'ai une application avec un JFrame principal, et d'autres JDialog et JFrame.Catch all KeyEvent de l'application

Je souhaite que l'utilisateur puisse prendre une capture d'écran chaque fois qu'il appuie sur F7.

J'ai un KeyListener sur le cadre principal, mais il ne fonctionnera pas lorsque le cadre a perdu son focus.

Y at-il un meilleur pour réaliser ce que je veux que d'ajouter KeyListener à toutes les fenêtres?

Nous vous remercions de votre aide.

Répondre

0

Ok, j'ai trouvé ce que je cherchais, le KeyboardFocusManager, responsable de l'envoi de tous les KeyEvent aux éléments de focus.
Voici comment cela fonctionne:

KeyboardFocusManager.getCurrentKeyboardFocusManager() 
       .addKeyEventDispatcher(e -> { 
        if (e.getKeyCode() == KeyEvent.VK_F7 && 
         e.getID() == KeyEvent.KEY_RELEASED) { 
         //do something 
        } 
        return true; //dispatch the event 
       });