How to add JMenuBar shortcuts?
Asked Answered
C

2

7

Adding shortcuts to JMenuBar submenu items in the Java Swing GUI designer is obvious, but how are shortcuts added to JMenuBar main menu items?

Cricket answered 15/9, 2010 at 13:16 Comment(2)
Are you looking for a way to do it programatically or through the GUI designer? If the GUI designer, what IDE are you using? Is this Netbeans?Hulbig
I would like to know how to do it programatically?Semicircle
S
21

You have two types of keyboard shortcuts: mnemonics and accelerators.

Mnemonics are usually triggered using Alt+KEY. That's the letter that's underlined in the menu item text (F for File, for example). Accelerators are application-wide shortcuts that are usually triggered using Ctrl+KEY.


To use mnemonics, you can use the setMnemonic() method:

menuItem.setMnemonic('F');

To use accelerators, you have to use the setAccelerator() method.

menuItem.setAccelerator(KeyStroke.getKeyStroke(
        java.awt.event.KeyEvent.VK_S, 
        java.awt.Event.CTRL_MASK));
Swop answered 15/9, 2010 at 13:27 Comment(4)
Thanks. menuItem.setMnemonic('F'); did exactly what was needed.Cricket
Note that setMnemonic always uses the first occurrence of the letter (see SwingUtilities#findDisplayedMnemonicIndex). If you need to use a latter occurrence, use AbstractButton#setDisplayedMnemonicIndex, which corresponds to Action.DISPLAYED_MNEMONIC_INDEX_KEY. (BTW I recommend you set action properties then call AbstractButton#setAction instead of calling those JComponent methods directly.)Lycaon
What is the different between accelerator and setMnemonic?Semicircle
am having a problem when using this on a JMenuItem in a JPopupMenu it wont work unless i press on the JPopupMenu and the dropdown of options appears and then while its shown it will work how can i go make the shortcut work without the need to press and show scenarioPlatysma
D
2

The Sun/Oracle site has a great Tutorial on using JMenu's When you are dealing with shortcut keys, Java uses mnemonic or Accelerator depending on the shortcut you want to use. you can set the mnemonic using the following

menuItem.setMnemonic(KeyEvent.VK_T);

and the accelerator via

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

These are both examples taken from the link above

Doubletree answered 15/9, 2010 at 13:30 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.