首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JMenuBar没有从RSyntaxTextArea接收密钥组合

JMenuBar没有从RSyntaxTextArea接收密钥组合
EN

Stack Overflow用户
提问于 2012-09-24 23:59:20
回答 1查看 150关注 0票数 1

我很难让文本框中的按键事件到达JMenBar。我在运行时从XML文件生成菜单栏,创建文本区域如下所示:

代码语言:javascript
复制
@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类的输入映射使文本区域忽略它们,从而解决了我的问题。

代码:

代码语言:javascript
复制
for(KeyStroke ks : this.mappedKeyStrokes) {
    component.getInputMap().put(ks, "none");
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-25 09:09:57

当我在文本区域中使用上述组合时,它们永远不会到达菜单项.知道为什么会这样吗?

这是(keyBindings的)设计:菜单绑定基本上是通过componentInputMap (== inputMap of type WHEN_IN_FOCUSED_WINDOW)来处理的。InputMaps按顺序提供

  • WHEN_FOCUSED
  • WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
  • WHEN_IN_FOCUSED_WINDOW

只有在之前不处理的情况下才会传递到下一行。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12574557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档