如何为java.awt.Frame及其所有组件创建键绑定?

时间:2017-03-08 12:55:59

标签: java swing

我在JFrame的构造函数中使用了以下代码。但它只在没有任何框架组件聚焦时才有效。

this.getActionMap().put("doSomething",actions);
getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_A, Event.CTRL_MASK),"doSomething");
thiis.getActionMap().put("doSomething",actions);`

1 个答案:

答案 0 :(得分:1)

  

但它只在没有任何框架组件聚焦时才有效。

正确。当组件具有焦点时,您正在使用InputMap。如果您希望绑定处于活动状态,即使组件没有焦点,您也需要使用不同的InputMap。阅读Swing教程How Key Bindings Work中有关3种不同InputMap类型的部分。

  

如何为java.awt.Frame及其所有组件创建键绑定?

Key Bindings适用于Swing组件,而不适用于AWT组件。

您应该将绑定添加到JRootPane的{​​{1}}:

JFrame