2012-11-02 21 views
5

私はエスケープキーが押されたことに反応するためにJPanelを必要とするアプリケーションで作業しています。 私は、コンポーネントにキーバインディングを登録するための正しいメソッドを使用していますが、明らかに何か間違っています。他のすべてのコンポーネントが初期化された後に、この方法は、私のJPanelのコンストラクタで呼び出されJPanelはキーバインドに反応しません

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); 
} 

:これは言っキーバインドに反応終了を登録するための責任のコードです。私はそれをデバッグしようとしたと私はアクション自体がJPanelに登録されているが、actionPerformed()メソッドのコードに決して達していることがわかった。私は上にあるJFrameでCardLayoutを使用しているので、このJPanelに焦点がない問題があると思われます。私の進歩をひどくひどく抑えているので、誰もがこれを手伝ってくれることを心から願っています。

答えて

関連する問題