我有一个使用JMenu创建的菜单.我想将快捷键Alt-F分配给此菜单.我使用setMnemonic('F')来做到这一点,但菜单无法识别助记符.
解决或调试此问题的最佳方法是什么?我发现设置一个断点并没有多大帮助.
谢谢.
代码片段:
//higher up in variable declaration
/** Menus on the menu bar */
private JMenu uiFindMnu = new JMenu("Find");
...
//inside the constructor
// set mnemonic for the Find menu
uiFindMnu.setMnemonic('F');
Run Code Online (Sandbox Code Playgroud)
在类构造函数内部(扩展JFrame):
JMenu helpmenu = new JMenu("File");
helpmenu.setMnemonic('F');
JMenuBar menubar = new JMenuBar();
menubar.add(helpmenu);
setJMenuBar(menubar);
Run Code Online (Sandbox Code Playgroud)
这对我来说很好.您需要提供有关代码的更多详细信息,以便我给出更好的答案.至于SWING或任何应用程序GUI的故障排除,我可以给出的最佳建议之一是创建最简单的方案.我保留了一个简单的JFrame模板,我可以将这样的简单代码放入内部进行测试.一旦您知道它在最简单的场景中工作,您就可以回到项目并发现GUI的其他部分导致与此功能冲突.
出于好奇,你的构造函数中没有一个名为'uiFindMnu'的局部变量隐藏了你的类变量,对吗?我会仔细检查以确保您调用setMnemonic()的变量是添加到MenuBar(并实际显示)的变量.
使用setMnemonic(KeyEvent.VK_F);
我建议您阅读有关 JMenus 的文章:Howto use Menus
以下是本文的摘录:
菜单支持两种键盘替代方案:助记符和加速器。助记符提供了一种使用键盘导航菜单层次结构的方法,从而提高了程序的可访问性。另一方面,加速器提供键盘快捷键来绕过菜单层次结构的导航。助记词适用于所有用户;加速器适用于高级用户。
助记符是选择已经可见的菜单项的键。例如,在 MenuDemo 中,第一个菜单具有助记符 A,第二个菜单项具有助记符 B。这意味着,当您以 Java 外观运行 MenuDemo 时,按 Alt 和 A 键会出现第一个菜单。当第一个菜单可见时,按 B 键(带或不带 Alt)可以选择第二个菜单项。菜单项通常通过在菜单项文本中首次出现的助记符字符下划线来显示其助记符,如以下快照所示。B 是该菜单项的助记符
您可以在构造菜单项时或使用 setMnemonic 方法指定助记符。以下是设置助记词和加速器的示例:
//Setting the mnemonic when constructing a menu item:
menuItem = new JMenuItem("A text-only menu item",
KeyEvent.VK_T);
//Setting the mnemonic after creation time:
menuItem.setMnemonic(KeyEvent.VK_T);
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,您可以通过指定与用户应按下的键相对应的 KeyEvent 常量来设置助记符。
归档时间: |
|
查看次数: |
21095 次 |
最近记录: |