2012-11-02 37 views
5

我正在研究一個應用程序,該應用程序需要JPanel對正在按下的轉義鍵作出反應。 我很確定我使用了正確的方法將keybindings註冊到組件,但顯然我仍然在做錯事。這是負責註冊結束反應,上述鍵綁定代碼:JPanel不對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); 
} 

這種方法被稱爲我的JPanel的構造所有其它部件都被初始化後。我試過調試它,我發現這個動作本身是在JPanel中註冊的,但actionPerformed()方法中的代碼永遠不會到達。我懷疑這個JPanel可能會有問題,因爲我在疊加的JFrame中使用了CardLayout。我真誠地希望任何人都可以幫助我,因爲它嚴重阻礙了我的進步。

回答

相關問題