2009-12-09 3 views
0
about = new JMenuItem("About"); 
about.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A((Toolkit.getDefaultToolkit().getMenuShortcutMask())))); 
JMenu help = new JMenu("Help"); 
help.add(about); 

Мне было интересно, почему мои ассистенты не работали. Я запускаю это в снежном барсе с помощью JavaSe-1.6 VM. Они работают, если я вытаскиваю меню вниз, а затем пытаюсь выполнить последовательность клавиш. СпасибоJava JMenuItem Accelator Snow Leopard

ответ

0

Строка 2 выглядит для меня ошибкой.

это не должно быть что-то вроде

getKeyStroke(KeyEvent.VK_A, Toolkit...getMenuShortcutMask()) 

?

i.e getKeyStroke имеет 2 аргумента, разделенных запятой.

Использование Toolkit...getMenuShortcutMask для получения зависимого от ОС ключа - очень умная идея, кстати. Я никогда не думал об этом.

0

О, я думаю, я понимаю, что реальная проблема:

Ускорители работают только тогда, когда они видны - они позволяют перемещаться по меню, сделав некоторый символ в меню «магии».

Я думаю, что вы ищете мнемонику. Они будут отключать ваши пункты меню из любого места, когда нажата соответствующая клавиша.

Общие мнемоники Alt-F4 убить программы (это Cmd-Q для вас), Ctrl-S сохранить, Ctrl-C копировать и т.д.

0

К сожалению, строка 2 неверна. Я, должно быть, случайно добавил, что K :-) Раньше я использовал мнемонику, но у нее также должно было быть меню, сбрасываемое на работу. Мне просто нужен ярлык для клавиатуры. Я переключился на использование ускорителей, потому что это то, что OSX java doc suggests.