2012-04-15 3 views
1

Я хочу установить ускоритель в JMenuItem.Java - добавление ускорителя в JMenuItem

Сейчас я устанавливаю его как этот

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

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

KeyStroke.getStroke() 

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

ответ

3

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

KeyEvent.VK_SPACE

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

+0

Я сказал, что не нашел 'char', соответствующий пробелу. 'KeyEvent.VK_SPACE' - это int, и нет такого метода, как KeyStroke.getStroke (int), который принимает только int. Я должен предоставить некоторый модификатор, который мне не нужен. –

+0

Итак, позвольте мне понять это прямо. Если пользователь нажимает кнопку и нажимает «темп» для ее активации, вы хотите вызвать действие меню? Позвольте мне обновить «необычный и труднодоступный ускоритель» до «неработоспособного графического интерфейса». Мой совет - выбрать подходящее письмо ускорителя. Каков текст, показанный в пункте меню? –

+1

+1 для размышлений о пользователе. :-) Подробнее [здесь] (http://stackoverflow.com/a/10161155/230513). – trashgod

3

Большинство делегатов пользовательского интерфейса визуализуют ускоритель 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)); 
+2

Обратите внимание, что Mac OS X использует этот ускоритель для запуска поиска [spotlight] (http://en.wikipedia.org/wiki/Spotlight_% 28software% 29). – trashgod

Смежные вопросы