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?
答案 0 :(得分:7)
文本字段按顺序触发三个事件:按键事件,键输入事件和键释放事件。密钥类型事件没有密钥代码信息;他们也没有修饰信息。如果您只关心用户键入的字符,则应处理键入的事件。如果您关心用户按下/释放哪些键,您应该处理按键/释放键事件。
如果您希望textfield的值使用keyReleased(KeyEvent e)作为
JTextField txt = (JTextField) e.getSource();
System.out.println(txt.getText());
您可以找到here
的示例您也可以使用DocumentListener。