1

我想使用 Ctrl 而不是 Alt 作为菜单栏上菜单的助记符。我认为它涉及使用 setAccelerator。

formatMenu.setMnemonic(KeyEvent.VK_F);
sizeMenu.setMnemonic(KeyEvent.VK_X);
styleMenu.setMnemonic(KeyEvent.VK_Z);

这是初始化代码,它允许我打开菜单,但仅当我使用 Alt 时。

4

1 回答 1

2

尝试使用

formatMenu.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, ActionEvent.CTRL_MASK));

编辑:除非 formatMenu 是 JMenuItem,否则这将不起作用;对于 JMenu,本地似乎不支持设置加速器(至少我没有找到任何结果)。一种解决方法是为菜单实现 get/setAccelerator ,就像在这个SO 答案中一样(对于子菜单已经完成,但您可以修改以满足您的需要)。

所以只要做一些像那里接受的答案一样的事情:

           JMenu formatMenu = new JMenu("Format Menu") {
           private KeyStroke accelerator;

           @Override
            public KeyStroke getAccelerator() {
                return accelerator;
            }

            @Override
            public void setAccelerator(KeyStroke keyStroke) {
                KeyStroke oldAccelerator = accelerator;
                this.accelerator = keyStroke;
                repaint();
                revalidate();
                firePropertyChange("accelerator", oldAccelerator, accelerator);
            }
            };
            formatMenu.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, KeyEvent.CTRL_MASK));
于 2012-12-11T12:13:04.877 回答