How do we make key bindings for a JFrame regardless of what's in focus in the frame?
I already looked at this question: How do you make key bindings for a java.awt.Frame?
I tried setting the input map for the root pane of the JFrame, but it doesn't work when the focus is on a JTextArea even though editable is false.
What's the easiest way to make key bindings work across an entire JFrame?
You could try using JComponent#getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
From the Java Docs
Constant used for registerKeyboardAction that means that the command should be invoked when the receiving component is in the window that has the focus or is itself the focused component.
As @camickr wrote, you should not have the same key also bound on you text area.
Now, here is an implementation:
// Action action = ...
// KeyStroke stroke = ...
JRootPane rootPane = mainJFrame.getRootPane();
rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(stroke, "myAction");
rootPane.getActionMap().put("myAction", action);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With