如何在应用程序未对焦时自定义键绑定

时间:2012-02-18 19:01:50

标签: java swing action awt key-bindings

我的目标是自定义PrintScreen键绑定。

但是,我需要将我的应用程序放在焦点上才能工作。 我正在使用inputmap和actionmap来执行此操作。我使用的参数是Component.WHEN_IN_FOCUSED_WINDOW。以下是我的代码,但它不起作用。

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
    jButton1.getInputMap().put(KeyStroke
        .getKeyStroke(KeyEvent.VK_PRINTSCREEN,2),"ps");
    jButton1.getActionMap().put("ps",new AbstractAction() {
        public void actionPerformed (ActionEvent e){
            //int i;
            i++;
            System.out.println(i);
        }
     });
}

如果没有键绑定,那么当应用程序不在焦点时如何自定义按键响应?

2 个答案:

答案 0 :(得分:2)

最高级InputMapComponent.WHEN_IN_FOCUSED_WINDOW,正如它所说的那样,Component位于焦点窗口时。如果您的窗口没有聚焦,您将不会收到任何输入事件。

此外,在您的示例中,您没有将参数传递给getInputMap,因此您将获得默认参数(Component.WHEN_FOCUSED)。

答案 1 :(得分:2)

您可以使用setDefaultButton,默认情况下绑定 Enter 键。另请参阅How to Use Key Bindings