Получить нажатие клавиши для «»

#java #swing

#java #качать

Вопрос:

Я хотел бы использовать привязку клавиш для клавиш < amp; > , а затем использовать это в моем JFrame.

Я использую следующий код, чтобы попытаться получить его для клавиши < .

 KeyStroke testStroke = KeyStroke.getKeyStroke("<"); 
mainJFrame.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
                        .put(testStroke, "clickButton");
mainJFrame.getRootPane().getActionMap().put("clickButton", new AbstractAction() {
        @Override
        public void actionPerformed(ActionEvent e) {
            System.out.println("PRESS!!!!");
        }
});
  

Я не могу заставить его работать. Однако это работает хорошо, если я использую ключ, подобный

 KeyStroke testStroke = KeyStroke.getKeyStroke("A"); 
  

Поэтому я думаю, что нажатие клавиши неверно, а остальная часть кода в порядке.

Как мне получить нажатие клавиши для клавиш < amp; >?

Комментарии:

1. Вы имеете в виду клавиши со стрелками? Добавьте прослушиватель ключей. В событии нажатия клавиши найдите KeyEvent.VK_LEFT и KeyEvent.VK_RIGHT.

2. Я имею в виду ключи меньше или больше.

3. Какая у вас раскладка клавиатуры?

Ответ №1:

Согласно документации для getKeyStroke(char) :

Возвращает общий экземпляр нажатия клавиши, который представляет событие KEY_TYPED для указанного символа.

 KeyStroke.getKeyStroke('<');
KeyStroke.getKeyStroke('>');
  

Раньше вы использовали строку. Поиск и документы для getKeyStroke(java.lang.String) :

Анализирует строку и возвращает нажатие клавиши. Строка должна иметь следующий синтаксис:

Этот метод имеет сложный синтаксис, которому нужно следовать. Сработала одна буква, но специальный символ не соответствует синтаксису. Это getKeyStroke(char) намного проще. Вы должны использовать его вместо этого.

Комментарии:

1. Спасибо. Он отлично работает с «<» вместо «<«. Предполагаю, что «<» считается строкой, а «<» — символом или как бы вы это объяснили?