KeyTyped方法说TextField是空白的...当它不是时

时间:2012-03-02 04:36:26

标签: java swing user-interface jtextfield keylistener

        Jtxtfield.addKeyListener(new KeyListener() {
        public void keyPressed(KeyEvent e) {};
        public void keyTyped(KeyEvent e) {
            if(Jtxtfield.getText().equals(""))
            System.out.println("hello1");
        }public void keyReleased(KeyEvent e) {
            if(Jtxtfield.getText().equals(""))
            System.out.println("hello2");
        }
    });

按下的第一个键(例如'a')的输出是:hello1。 如果我按第二个键(再说'a'),则没有输出(如预期的那样)。 如果我按两次删除键,我会得到hello1 hello2。

为什么会这样?为什么keyTyped方法将txtfield视为没有任何内容?更具体地说,当我按下文本字段中按下的第一个键时,为什么我只得到hello1?

1 个答案:

答案 0 :(得分:7)

文本字段按顺序触发三个事件:按键事件,键输入事件和键释放事件。密钥类型事件没有密钥代码信息;他们也没有修饰信息。如果您只关心用户键入的字符,则应处理键入的事件。如果您关心用户按下/释放哪些键,您应该处理按键/释放键事件。

如果您希望textfield的值使用keyReleased(KeyEvent e)作为

JTextField txt = (JTextField) e.getSource();
System.out.println(txt.getText());

您可以找到here

的示例

您也可以使用DocumentListener