1

我想为 JMenuItem 设置一个加速器。

现在我这样设置

openFile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK));

它正在工作,但我不希望 ctrl+o 作为加速器。我想要“空间”作为加速器,但我没有找到任何方法可以生成与“空间”对应的 KeyStroke。

KeyStroke.getStroke()

要么采用 char 要么 (int, int)。我也没有找到任何与空间相对应的字符。

4

2 回答 2

3

..也没有找到任何与空格相对应的字符。

KeyEvent.VK_SPACE

如果 Swing 忽略它,我不会感到惊讶,因为它' '是一个不寻常且难以看到的加速器。

于 2012-04-15T09:04:41.490 回答
3

大多数 UI 委托KeyEvent.VK_SPACE使用类似METRICAL TETRASEME: ⏘ ( U+23D8) 的方式呈现加速器。例如, anAction可能包括以下几行:

static final int MASK = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, MASK));
于 2012-04-15T10:19:31.973 回答