【问题标题】:Java: Add KeyListener to JFrame and its componentsJava:将 KeyListener 添加到 JFrame 及其组件
【发布时间】:2015-02-17 16:24:45
【问题描述】:

我尝试将KeyListener 添加到JFrame。像这样可以正常工作。

JFrame frame = new JFrame();
[...]
frame.addKeyListener(new KeyListener() { [...] });

但是,当我将焦点放在一个按钮或 JTextField 上(比如我点击它时),KeyListener 不会对我的按钮做出反应。

你知道如何解决这个问题吗?

【问题讨论】:

    标签: java swing jframe actionlistener keylistener


    【解决方案1】:

    你知道如何解决这个问题吗?

    是的,使用键绑定而不是KeyListener。即使绑定的组件没有焦点,绑定也可以设置为工作,这是它们的主要优势之一(没有双关语)。该教程可以在这里找到:Key Bindings Tutorial。

    请注意,当您从绑定的组件中获取InputMap 时,请务必使用正确的条件,即,

    InputMap inputMap = myComponent.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
    

    每个组件都有三个输入映射,当组件被保持在当前处于活动状态的顶级窗口(例如JFrame)中时,上面的一个将处于活动状态。这意味着即使组件本身没有焦点,绑定也会起作用。


    您可以在此处找到我的一些使用键绑定的示例程序,通常与 Swing 动画结合使用:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-30
      • 2012-06-07
      • 1970-01-01
      • 1970-01-01
      • 2012-09-27
      • 2013-12-24
      • 2012-02-26
      • 1970-01-01
      相关资源
      最近更新 更多