在Swing中,如何在没有特定组件的情况下应用KeyListener

时间:2011-09-22 15:00:56

标签: java swing keylistener

通常我们将Key Listener应用于特定组件,如文本字段,密码字段等。但我想将此侦听器行为概括为适用于所有组件。

2 个答案:

答案 0 :(得分:6)

Swing旨在与Key Bindings一起使用,它可以做你想要的。我首先查看Key Bindings。不要忘记阅读Swing教程以获取完整信息。

如果这没有帮助,请参阅Global Event Listeners以获取一些建议。

答案 1 :(得分:1)

所有swing组件都是JComponent。您可以将所有这些用作JComponent:

@Override
public void keyTyped(KeyEvent e) {
   JComponent component = (JComponent) e.getSource();
   // TODO Implements your action
}

您可以看到这是一种有限的方法。

您也可以根据来源类别工作:

@Override
public void keyTyped(KeyEvent e) {
    Object source = (JComponent) e.getSource();

    if (source instanceof JTextField) {
        // TODO Implment action for JTextField
    } else if (source instanceof JTextArea) {
        // TODO Implment action for JTextArea
    }
}

根据您的需要,您可以使用Reflections API执行此操作...