2012-11-02 1 views
5

Je travaille sur une application qui nécessite un JPanel pour réagir à la pression de la touche d'échappement. Je suis assez sûr que j'ai utilisé la bonne méthode pour enregistrer les raccourcis clavier à un composant, mais clairement, je suis toujours en train de faire quelque chose de mal. Ce code est responsable de l'enregistrement fin réagir à ladite combinaison de touches:JPanel ne réagit pas à KeyBindings

private void initializeKeyBindings() { 
    Action a = new AbstractAction() { 
     private static final long serialVersionUID = 1L; 
     @Override public void actionPerformed(ActionEvent e) { 
      menu.setVisible(true); 
      System.out.println("Herp"); 
     } 
    }; 
    this.getInputMap().put(KeyStroke.getKeyStroke("ESCAPE"), "ESCAPE"); 
    this.getActionMap().put("ESCAPE", a); 
} 

Cette méthode est appelée dans le constructeur de mes JPanel après sont initialisés tous les autres composants. J'ai essayé de le déboguer et j'ai trouvé que l'action elle-même est enregistrée dans le JPanel mais le code dans la méthode actionPerformed() n'est jamais atteint. Je suspecte qu'il pourrait y avoir un problème avec ce JPanel n'ayant pas l'accent puisque j'utilise un CardLayout dans le JFrame sus-jacent. J'espère sincèrement que n'importe qui peut m'aider avec cela car il retarde très fortement mes progrès.

Répondre