如何在 Java 应用程序中为我的菜单栏设置键盘快捷键?
Posted
技术标签:
【中文标题】如何在 Java 应用程序中为我的菜单栏设置键盘快捷键?【英文标题】:How do I set keyboard shortcuts for my menubar in a Java application? 【发布时间】:2012-12-10 01:45:28 【问题描述】:我正在用 Java 开发一个简单的绘图应用程序。我仅限于使用 AWT 菜单栏(不是 JMenuBar),我需要设置一些键盘快捷键,但我找不到如何设置。我需要两个 MenuItem 和三个 CheckBoxMenuItem 的快捷方式。
它会是这样的:
newItem = Ctrl+N
quitItem = Ctrl+Q
rectangleItem = Ctrl+R
ovalItem = Ctrl+O
lineItem = Ctrl+L
【问题讨论】:
你见过this documentation?我不熟悉AWT,但它似乎相关...... @Jeff 感谢您的发帖,我检查了它,我正在尝试实现它,但我无法弄清楚我需要什么#import 才能使其工作。它说它是组件的一部分,我已经导入了 awt.*,但它似乎没有工作。此外,它说我需要在 Canvas 上覆盖 isFocusTraversable,但我不知道该怎么做。编辑:哇!这适用于 MenuItems,但不适用于 CheckBoxMenuItems 这只是一个例子,如果你正在实现自己的Canvas
版本——不用担心。您所要做的就是为每个 MenuItem
的构造函数提供第二个参数 - 如该文档的后半部分所示。
添加第二个参数对于每个MenuItem
都非常有效,但它不适用于 CheckBoxMenuItems
好吧,我恐怕这里的输入都没有了——我实际上并没有能力在这台机器上编译代码。不过,您可以考虑问另一个关于 CheckBoxMenuItem
s 的具体问题 - 问题越具体,您得到的答案就越好。
【参考方案1】:
由于 cmets 中的建议似乎至少解决了您的部分问题,我将把它放在这里作为未来用户的答案。
阅读this documentation 的后半部分并更改您的MenuItem
构造函数以将MenuShortcut
作为第二个参数,如下所示(取自链接的文档):
menu.add(new MenuItem("Save...", new MenuShortcut('s'));
【讨论】:
【参考方案2】:如果这样做会更容易:
放置一个分层窗格?前面有一个玻璃,它将接受整个区域的键盘事件。
不确定什么组件适用于 awt,但确定您有充分的理由使用它,而不仅仅是外观和感觉?在那里你设置了快捷方式。
【讨论】:
以上是关于如何在 Java 应用程序中为我的菜单栏设置键盘快捷键?的主要内容,如果未能解决你的问题,请参考以下文章
Primefaces:如何在 primefaces 3.5 中为菜单栏设置粘性