Как попасть по нажатой клавише в JPanel CTRL + m? - PullRequest
1 голос
/ 20 июня 2011

Я пытаюсь реализовать JPopupMenu поверх компонента текстового редактора. Он должен быть активирован по CTRL + m. Могу ли я сделать это внутри

@Override
public void keyPressed(KeyEvent arg0) {

}

и если да, то как? Потому что, если я попытаюсь

if(arg0.isControlDown()&&arg0.getKeyChar()=='m')

это не работает.

1 Ответ

1 голос
/ 21 июня 2011

Сначала я подумал, что это как-то связано с тем, что CTRL + M - это то же самое, что возврат каретки / перевод строки, но это не так. Попробуйте:

if(e.isControlDown() && e.getKeyCode() == KeyEvent.VK_M) {
    System.out.println("pressed");
    menu.setVisible(true);
}

Я не смог заставить его работать с использованием chars с e.getKeyChar (), но getKeyCode () работает для меня. Отлично, это работает. Но я тот тип, который должен знать почему. Итак, я нашел это :

события KEY_PRESSED и KEY_RELEASED не предназначены для отчетности ввод символов. Поэтому значения возвращенные этим методом гарантированы быть значимым только для KEY_TYPED События

...