我在JFrame
的构造函数中使用了以下代码。但它只在没有任何框架组件聚焦时才有效。
this.getActionMap().put("doSomething",actions);
getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_A, Event.CTRL_MASK),"doSomething");
thiis.getActionMap().put("doSomething",actions);`
答案 0 :(得分:1)
但它只在没有任何框架组件聚焦时才有效。
正确。当组件具有焦点时,您正在使用InputMap
。如果您希望绑定处于活动状态,即使组件没有焦点,您也需要使用不同的InputMap
。阅读Swing教程How Key Bindings Work中有关3种不同InputMap类型的部分。
如何为java.awt.Frame及其所有组件创建键绑定?
Key Bindings适用于Swing组件,而不适用于AWT组件。
您应该将绑定添加到JRootPane
的{{1}}:
JFrame