【发布时间】:2012-10-16 07:47:20
【问题描述】:
我有一个用户请求将加速器添加到子菜单 (JMenu),这将允许用户按下快捷方式并让相应的子菜单“折叠”,显示其包含的菜单项。
我不记得每个人都见过这样的东西(Java 或任何其他语言)。我们的应用程序是使用 Swing 用 Java 编写的。我们有许多带有加速器的 JMenuItems 运行良好,但是当我尝试向 JMenu 添加加速器时出现以下异常:
java.lang.Error: setAccelerator() 没有为 JMenu 定义。请改用 setMnemonic()。
我尝试使用MenuDemo!代码来进一步试验一下。
这是我尝试过的:
//a submenu
menu.addSeparator();
submenu = new JMenu("A submenu");
submenu.setMnemonic(KeyEvent.VK_S);
submenu.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U, InputEvent.CTRL_MASK));
最后一行是我添加的,导致异常。
我尝试了广泛的谷歌搜索,但我只能找到有关如何将加速器添加到 JMenuItem 的文章。
似乎 JMenu 本身不支持此功能。是否有任何解决方法来实现这种行为?
【问题讨论】:
标签: java swing key-bindings jmenu accelerator