如何为JFrame的所有组件创建KeyListener触发器?

时间:2014-11-30 08:23:09

标签: java swing jframe keylistener

我有一个班级,如下:

public class MyFrame extends javax.swing.JFrame implements KeyListener { ... }

在构造函数中:

addKeyListener(this);
setFocusable(true);

只要窗口本身处于焦点,这就可以工作。如果我专注于该窗口中的组件,则键侦听器不再侦听。我想要它,以便每当窗口是活动窗口时,无论焦点在哪个特定子组件上,都将触发关键监听器。我希望保持焦点遍历关键,以提高生活质量,但它们并不重要。

我该怎么做?

2 个答案:

答案 0 :(得分:3)

最好使用每个组件的键绑定API,您可以使用键绑定来更改触发给定操作所需的焦点级别,例如,当组件具有焦点时,组件是子组件时焦点组件的内容,或者当它包含在焦点窗口中时......

有关详细信息,请参阅How to Use Key Bindings

答案 1 :(得分:2)

以递归方式将KeyListener添加到子组件中。

检查

How to get all elements inside a JFrame?

我希望这可以提供帮助!