2012-11-02 18 views
5

Pracuję nad aplikacją, która wymaga JPanelu, aby zareagował na wciśnięty klawisz Escape. Jestem prawie pewien, że użyłem właściwej metody do rejestrowania skrótów do komponentu, ale wyraźnie nadal robię coś złego. Jest to kod odpowiedzialny za rejestrację koniec reakcji do wspomnianego kombinacja klawiszy:JPanel nie reaguje na 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); 
} 

Metoda ta nazywana jest w konstruktorze moich JPanel gdy wszystkie inne elementy są inicjowane. Próbowałem debugowania go i stwierdziłem, że sama akcja jest zarejestrowana w JPanel, ale kod w actionPerformed() metoda nigdy nie zostanie osiągnięty. Podejrzewam, że może być problem z tym JPanel nie mając ostrości, ponieważ używam CardLayout w overlying JFrame. Mam szczerą nadzieję, że każdy może mi w tym pomóc, ponieważ bardzo źle podtrzymuje mój postęp.

Odpowiedz