In the NetBeans 6.9 IDE, if you create a
New Project >> Java >> Java Desktop Application and run it, you will find that the menu items have mnemonics, but only after ALT is pressed.
(The netbeans program itself uses this style of menu.)
However, if you create a new File >> Swing GUI Forms >> JFrame Form, and add a simple menubar with mnemonics, then run the JFrame, the mnemonics will always appear without having to press ALT. This is what I would prefer.
(Firefox uses this style of menu)
My thoughts are that the org.jdesktop.application overrides the default setting, but that’s just a guess. Anyone know how to make a SingleFrameApplication not require ALT to be pressed?
Thanks.
Edit:
The problem was found to be that JFrame and JDesktop use different default Look and Feels
It’s a Windows setting. In XP go to:
(Win7 should have a similar setting somewhere, I suppose.)
The default setting is on, so Java is right and Firefox is wrong (even Office 2003 doesn’t respect that setting).
Uncheck it and you’ll always see mnemonic underline in Java.
Note that only Windows LAF correctly respects the setting. Motif and Metal always show the underline. I don’t use NetBeans or jDesktop but I guess it uses system LAF and thus the underline is correct.
If you still want to always show underline under Windows LAF (please think twice before you do), call
UIManager.getLookAndFeelDefaults().put("Button.showMnemonics", false), which does NOT seem to work for XP becauseWindowsMenuItemUI#paintTextonly checks the flag under Vista. You could check Win7 JDK yourself.Note that there’s an accepted bug when the setting is on, which goes like this (saving you some time to parse the 2nd most awful bug tracking system in the universe. The worst is an in-house ColdFusion system my company used to have): create one menu with mnemonic, for example
&File, pressAlt-F, release, pressAlt-Fagain, the underline is gone. They are back as soon as you do anything else, clicking, or just pressAltby itself.