#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. Спасибо. Он отлично работает с «<» вместо «<«. Предполагаю, что «<» считается строкой, а «<» — символом или как бы вы это объяснили?