Java JTextField和(错误的)KeyListeners

时间:2013-02-02 09:30:14

标签: 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(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键时,会出现chatbox / JTextField,并且会出现“在CHAT BOX BOX中检测到的键事件”,但是在此之后,键盘记录器拒绝工作。 “在CHAT BOX中检测到的关键事件”打印件甚至不适用。

控件有焦点(我甚至尝试过专注于使用requestFocusInWindow()),但是关键的监听器拒绝工作,所以我假设它与TextField“覆盖”它们或其他东西有关输入的缘故?

如何让KeyListeners侦听JTextField中的某些键?

此致 本。

0 个答案:

没有答案