Как настроить связывание клавиш, когда приложение не в фокусе - PullRequest
0 голосов
/ 18 февраля 2012

Моя цель - настроить привязку ключа 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 ]

2 голосов
/ 19 февраля 2012

Вы можете использовать setDefaultButton, что по умолчанию связано с ключом Enter См. Также Как использовать привязки клавиш .

2 голосов
/ 19 февраля 2012

Самый высокий уровень InputMap равен Component.WHEN_IN_FOCUSED_WINDOW, который, как говорится, работает, когда Component находится в сфокусированном окне. Если ваше окно не сфокусировано, вы не получите никаких входных событий.

Кроме того, в вашем примере вы не передаете аргумент getInputMap, поэтому вы получаете значение по умолчанию (Component.WHEN_FOCUSED).

...