JMenuBar не получает комбинации клавиш из RSyntaxTextArea
У меня проблемы с тем, что события нажатия клавиш из текстовой области достигают JMenBar. У меня есть строка меню, сгенерированная во время выполнения из файла XML, и текстовая область создается следующим образом:
@Override
public void createUI() {
this.textArea = new RSyntaxTextArea(25, 70);
this.scrollPane = new RTextScrollPane(this.textArea);
this.setLayout(new BorderLayout());
this.add(this.scrollPane, BorderLayout.CENTER);
this.textArea.setSyntaxEditingStyle("text/dm");
}
RSyntaxTextArea textArea;
RTextScrollPane scrollPane;
В пунктах меню я использую setAccelerator()
установить комбинации клавиш для их использования. Когда я использую указанные комбинации в текстовой области, они никогда не доходят до пункта меню. Я не помню, чтобы у меня была эта проблема раньше, есть идеи, почему это происходит сейчас?
Проблема решена (не хотел ждать 6 часов, чтобы ответить на мой собственный вопрос.):
Я решил свою проблему, сохранив список отображений клавиш, используемых для меню, а затем заставив текстовую область игнорировать их, используя карту ввода JComponent
учебный класс.
Код:
for(KeyStroke ks : this.mappedKeyStrokes) {
component.getInputMap().put(ks, "none");
}
1 ответ
Когда я использую указанные комбинации в текстовой области, они никогда не доходят до пункта меню [...]. Есть идеи, почему это происходит?
Это по замыслу (связывания клавиш): привязки меню в основном обрабатываются с помощью componentInputMap (== inputMap типа WHEN_IN_FOCUSED_WINDOW). InputMaps подаются в последовательности
- WHEN_FOCUSED
- WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
- WHEN_IN_FOCUSED_WINDOW
переход к следующему в строке, только если не обработано ранее.