2010-09-15 4 views
7

Добавление ярлыков в элементы подменю JMenuBar в дизайне GUI Java Swing очевидно, но как добавить ярлыки в пункты главного меню JMenuBar?Как добавить ярлыки JMenuBar?

+0

Вы ищете способ сделать это программно или через дизайнера GUI? Если разработчик GUI, какую IDE вы используете? Это Netbeans? –

+0

Я хотел бы знать, как это сделать программно? –

ответ

19

У вас есть два типа сочетаний клавиш: мнемоника и ускорители.

Мнемоники обычно срабатывают при помощи Alt + KEY. Это письмо, подчеркнутое в тексте пункта меню (например, F для файла). Ускорители - это быстрые клавиши приложения, которые обычно запускаются с помощью Ctrl + KEY.


Чтобы использовать мнемонические, вы можете использовать метод setMnemonic():

menuItem.setMnemonic('F'); 

Чтобы использовать акселераторы, вы должны использовать метод setAccelerator().

menuItem.setAccelerator(KeyStroke.getKeyStroke(
     java.awt.event.KeyEvent.VK_S, 
     java.awt.Event.CTRL_MASK)); 
+0

Спасибо. 'menuItem.setMnemonic ('F');' сделал именно то, что было необходимо. – jacknad

+1

Обратите внимание, что 'setMnemonic' всегда использует первое вхождение буквы (см.' SwingUtilities # findDisplayedMnemonicIndex'). Если вам нужно использовать последнее вхождение, используйте 'AbstractButton # setDisplayedMnemonicIndex', что соответствует' Action.DISPLAYED_MNEMONIC_INDEX_KEY'. (BTW Я рекомендую вам установить свойства действия, а затем вызывать 'AbstractButton # setAction' вместо прямого вызова этих методов JComponent.) –

+0

В чем разница между ускорителем и setMnemonic? –

2

Сайт ВС/Oracle имеет большое руководство по использованию JMenu's Когда вы имеете дело с горячими клавишами, Java использует мнемонику или ускоритель в зависимости от ярлыка вы хотите использовать. вы можете установить мнемонику с помощью следующей

menuItem.setMnemonic(KeyEvent.VK_T); 

и ускоритель через

menuItem.setAccelerator(KeyStroke.getKeyStroke(
         KeyEvent.VK_T, ActionEvent.ALT_MASK)); 

Они оба примера взяты из ссылки выше

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