如何捕获关键事件

时间:2012-01-20 16:17:20

标签: java swing netbeans-6.9 key-events

我能够找到的关键侦听器的所有示例都处理主面板以外的组件,例如文本框或菜单。 我知道如何使用setMnemonic来编程Menu热键,但是这个方法似乎不可用,并且oracle keylistener教程的link被破坏了。 当我做右键点击>活动>键> KeyPressed在主窗体上我得到以下内容,但没有任何键导致mainPanelKeyPressed. 使用关键事件触发独立于焦点的动作的正确方法是什么?

mainPanel.addKeyListener(new java.awt.event.KeyAdapter() {
    public void keyPressed(java.awt.event.KeyEvent evt) {
        mainPanelKeyPressed(evt);
    }
});

private void mainPanelKeyPressed(java.awt.event.KeyEvent evt) {
    // Added to help find the ID of each 'arrow' key
    JOptionPane.showMessageDialog(null, "mainPanelKeyPressed"); 
}

2 个答案:

答案 0 :(得分:5)

  

使用关键事件触发独立于焦点的动作的正确方法是什么?

请参阅:How to Use Key Bindings

或者将JMenuBar与菜单和菜单项一起使用。

答案 1 :(得分:0)

重点是重要的。您可能需要单击并进行实验,并使用component.requestFocusInWindow()来帮助。