如何在 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 好吧,我恐怕这里的输入都没有了——我实际上并没有能力在这台机器上编译代码。不过,您可以考虑问另一个关于 CheckBoxMenuItems 的具体问题 - 问题越具体,您得到的答案就越好。 【参考方案1】:

由于 cmets 中的建议似乎至少解决了您的部分问题,我将把它放在这里作为未来用户的答案。

阅读this documentation 的后半部分并更改您的MenuItem 构造函数以将MenuShortcut 作为第二个参数,如下所示(取自链接的文档):

menu.add(new MenuItem("Save...", new MenuShortcut('s'));

【讨论】:

【参考方案2】:

如果这样做会更容易:

放置一个分层窗格?前面有一个玻璃,它将接受整个区域的键盘事件。

不确定什么组件适用于 awt,但确定您有充分的理由使用它,而不仅仅是外观和感觉?

在那里你设置了快捷方式。

【讨论】:

以上是关于如何在 Java 应用程序中为我的菜单栏设置键盘快捷键?的主要内容,如果未能解决你的问题,请参考以下文章

如何从联系人快捷菜单中为我的应用程序添加链接

Primefaces:如何在 primefaces 3.5 中为菜单栏设置粘性

在菜单栏和主屏幕中为 Activity 定义不同的标题

如何在 AdminLTE 3 中为 Yii2 框架设置侧边栏宽度

如何在 Prism 中为我的对话窗口设置区域管理器?

macbookair如何关闭键盘