Java JTextField和(错误的)键侦听器

Java JTextField和(错误的)键侦听器,java,swing,events,Java,Swing,Events,我创建了一个自定义类,它扩展了JTextField并实现了KeyListener。以下是我的课堂摘录: public class ChatBox extends JTextField implements KeyListener { private boolean hidden; public ChatBox(int x, int y, boolean hidden, MapFrame parent) { setBounds(x,y,300,30); setBackground

我创建了一个自定义类,它扩展了JTextField并实现了KeyListener。以下是我的课堂摘录:

public class ChatBox extends JTextField implements KeyListener {
private boolean hidden;

public ChatBox(int x, int y, boolean hidden, MapFrame parent)
{
    setBounds(x,y,300,30);
    setBackground(new Color(255,255,255,40));
    parent.addKeyListener(this);

    if(hidden == true)
    {
        setVisible(false);
    }
    else
    {
        setVisible(true);
    }

}
然后,我为KeyListener创建了事件:

@Override
public void keyPressed(KeyEvent arg0) {
    // TODO Auto-generated method stub
    System.out.println("KEY EVENT DETECTED PRESSED");

}

@Override
public void keyReleased(KeyEvent key) {
    System.out.println("KEY EVENT DETECTED ON CHAT BOX");
    if(key.getKeyCode() == KeyEvent.VK_ENTER)
    {
            System.out.println("Showing message input...");
            setVisible(true);
            repaint();
    }

    if(key.getKeyCode() == KeyEvent.VK_ESCAPE)
    {
            System.out.println("Hiding message input...");
            setVisible(false);

            repaint();
    }

}

@Override
public void keyTyped(KeyEvent arg0) {
    // TODO Auto-generated method stub

}
现在,我的目标是当用户按enter键时聊天框出现,然后当他们按escape键时聊天框消失

当用户按下enter键时,出现chatbox/JTextField,并触发“chatbox中检测到的按键事件”,但超过此点时,按键侦听器拒绝工作。“在聊天框中检测到关键事件”打印内容甚至不适用

该控件具有焦点(我甚至尝试使用requestFocusInWindow()专门为其提供焦点),但关键侦听器拒绝工作,因此我假设这与文本字段“覆盖”它们有关,还是与输入有关

如何让KeyListeners监听JTextField中的某些键

问候,,
Ben.

可能值得注意的是,父对象是一个自定义JFrame,我已经将键侦听器添加到父对象中。请使用SwingKeybindings@GuillaumePolet我向父项添加了键绑定,但是我有同样的问题,一旦TextField获得焦点,键绑定就不再工作了。这会很快给你一个体面的答复。不提供密钥侦听器意味着你要求其他人为你这样做,这不太可能发生。只需强调@Guillaume的评论:永远不要使用密钥侦听器-只有当它们注册到的组件是focusowner时,它们才会工作,这通常是它们造成的最小问题。键绑定是一种方式。如果希望聚焦组件的父级处理组件本身未处理的那些组件,请在\u祖先时使用其inputmap类型