Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java Swing: Can I set a button mnemonic that doesn't require pressing alt?

For example, say I have a series of toolbar-style buttons across the top of my application's main window. I want to attach a mnemonic to one of these that's just a single keypress, like F3.

When you set the mnemonic to KeyEvent.VK_F3, the user has to press Alt+F3.

If you have a menu item, you can set an accelerator, rather than a mnemonic, and choose whether to use a meta key. Buttons don't let you set an accelerator, however.

Is there a way to turn of the meta-key for button mnemonics?

like image 419
Electrons_Ahoy Avatar asked Mar 02 '10 22:03

Electrons_Ahoy


2 Answers

Actions can bind a chunk of code to a menu item, a keystroke, a button and anything else you are interested.

In general, don't think of your code as tied to a specific keypress/event--and don't use anonymous inner classes. Instead use real classes where your code can be reused for different types of things. That pattern used by the Action class gives some good examples of this.

like image 190
Bill K Avatar answered Oct 12 '22 05:10

Bill K


Well behind the scenes, whether you use an accelerator or a mnemonic on a component, the method will create a Key Binding for you.

So there is nothing to prevent you from binding a KeyStroke and Action to whatever component you want and manually create the Key Binding. It can even be a component that doesn't have the setMNemonic(...) method.

like image 43
camickr Avatar answered Oct 12 '22 06:10

camickr