2010-09-15 53 views
7

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

+0

这两个例子您是否正在寻找一种方法以编程方式做到这一点或通过GUI设计器?如果GUI设计器,你在使用什么IDE?这是Netbeans吗? – 2010-09-15 13:28:17

+0

我想知道如何以编程方式做到这一点? – 2014-02-12 21:25:55

回答

19

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

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


要采用助记码,您可以使用setMnemonic()方法:

menuItem.setMnemonic('F'); 

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

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

谢谢。 'menuItem.setMnemonic('F');'确实需要。 – jacknad 2010-09-15 14:00:04

+1

请注意,'setMnemonic'总是使用该字母的第一个匹配项(请参阅'SwingUtilities#findDisplayedMnemonicIndex')。如果您需要使用后一种情况,请使用'AbstractButton#setDisplayedMnemonicIndex',它对应于'Action.DISPLAYED_MNEMONIC_INDEX_KEY'。 (顺便说一句,我建议你设置动作属性,然后调用'AbstractButton#setAction',而不是直接调用这些JComponent方法。) – 2010-09-16 16:54:58

+0

加速器和setMnemonic有什么不同? – 2014-02-12 21:26:22

2

太阳/ Oracle的网站上有关于使用JMenu's 当你正在处理快捷键一个伟大的教程,Java使用记忆或加速器取决于您要使用的快捷方式。 您可以使用以下

menuItem.setMnemonic(KeyEvent.VK_T); 

,并通过

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

油门设定的助记符这些都是从链接采取上述