Java - добавить ускоритель в JMenuItem

Я хочу установить ускоритель на JMenuItem.

Прямо сейчас я устанавливаю это так

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

и это работает, но я не хочу Ctrl + O в качестве ускорителя. Я хочу "пробел" в качестве ускорителя, но я не нашел никакого метода, с помощью которого я мог бы генерировать KeyStroke, соответствующий "пробелу".

KeyStroke.getStroke()

либо принимает символ или (int, int). Я не нашел ни одного символа, соответствующего космосу.

2 ответа

Большинство делегатов пользовательского интерфейса отображают KeyEvent.VK_SPACE ускоритель, используя что-то вроде METRICAL TETRASEME: ⏘ (U+23D8). Например, Action может включать эти строки:

static final int MASK = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, MASK));

... не нашел ни одного символа, соответствующего пробелу.

KeyEvent.VK_SPACE

Я не удивлюсь, если Swing проигнорирует это, так как ' ' это необычный и трудно видимый ускоритель.

Другие вопросы по тегам