【问题标题】:How to add JMenuBar shortcuts?如何添加 JMenuBar 快捷方式?
【发布时间】:2010-09-15 13:16:35
【问题描述】:

在 Java Swing GUI 设计器中为 JMenuBar 子菜单项添加快捷方式是显而易见的,但是如何在 JMenuBar 主菜单项中添加快捷方式?

【问题讨论】:

  • 您是否正在寻找一种以编程方式或通过 GUI 设计器执行此操作的方法?如果是 GUI 设计器,您使用的是什么 IDE?这是 Netbeans 吗?
  • 我想知道如何以编程方式进行操作?

标签: java swing jmenubar


【解决方案1】:

您有两种类型的键盘快捷键:助记符和加速键。

助记符通常使用 Alt+KEY 触发。这是菜单项文本中带下划线的字母(例如,F 代表文件)。加速器是应用程序范围的快捷方式,通常使用 Ctrl+KEY 触发。


要使用助记词,可以使用setMnemonic()方法:

menuItem.setMnemonic('F');

要使用加速器,您必须使用setAccelerator() 方法。

menuItem.setAccelerator(KeyStroke.getKeyStroke(
        java.awt.event.KeyEvent.VK_S, 
        java.awt.Event.CTRL_MASK));

【讨论】:

  • 谢谢。 menuItem.setMnemonic('F'); 正是我们所需要的。
  • 请注意,setMnemonic 始终使用第一个出现的字母(请参阅SwingUtilities#findDisplayedMnemonicIndex)。如果您需要使用后者,请使用AbstractButton#setDisplayedMnemonicIndex,它对应于Action.DISPLAYED_MNEMONIC_INDEX_KEY。 (顺便说一句,我建议您设置操作属性,然后调用 AbstractButton#setAction 而不是直接调用那些 JComponent 方法。)
  • 加速器和setMnemonic有什么区别?
  • JPopupMenu 中的JMenuItem 上使用它时遇到问题,除非我按下JPopupMenu 并出现选项下拉列表,然后在显示时它会起作用我怎样才能让快捷方式工作而无需按下并显示场景
【解决方案2】:

Sun/Oracle 网站上有一个很好的使用 JMenu's 的教程 当您处理快捷键时,Java 会根据您要使用的快捷键使用助记符或加速器。 您可以使用以下设置助记符

menuItem.setMnemonic(KeyEvent.VK_T);

和加速器通过

 menuItem.setAccelerator(KeyStroke.getKeyStroke(
                        KeyEvent.VK_T, ActionEvent.ALT_MASK));

这两个例子都取自上面的链接

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 2018-10-12
    • 2012-05-28
    • 2019-07-14
    • 2019-06-13
    • 1970-01-01
    相关资源
    最近更新 更多