现在,我覆盖JFrame.addKeyListener(KeyListener)
,检查其内容窗格中的组件,然后向所有这些组件添加侦听器(在使用super调用原始方法之后)
JFrame frame = new JFrame() {
public void addKeyListener(KeyListener l) {
super.addKeyListener(l);
for(Component c : getContentPane().getComponents()) {
c.addKeyListener(l);
}
}
};
我不确定这是否是将听众添加到组件层次结构的通常实践方式,但它是我能想到的唯一方法。标准JDK中是否已经内置了这个内容?
答案 0 :(得分:1)
无需问为什么
当然有,因为任何时候我看到有人使用KeyListener,我知道几乎总有更好的方法来解决问题。
无论焦点是什么,我都希望触发KeyEvents
还不是很清楚。
例如,人们通常不会在JButton上监听KeyEvents。 ActionListener
用于处理键盘按下按钮。或者,有些人已经建议Key Bindings
可能更合适。
或者在文本组件上,您可以使用DocumentListener
。
最后,如果你真的认为你需要听所有事件,那么你可以使用`AWTEventListener'。有关详细信息,请参阅Global Event Listeners。
是的,为什么,这很重要。