use*_*392 2 java user-interface swing keylistener jtextfield
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");
}
});
Run Code Online (Sandbox Code Playgroud)
按下的第一个键的输出(例如,'a')是:hello1.如果我按第二个键(再说'a'),则没有输出(如预期的那样).如果我按两次删除键,我会得到hello1 hello2.
为什么会这样?为什么keyTyped方法将txtfield视为没有任何内容?更具体地说,当我按下文本字段中按下的第一个键时,为什么我只得到hello1?
文本字段依次触发三个事件:按键事件,键输入事件和键释放事件.密钥类型事件没有密钥代码信息; 他们也没有修饰信息.如果您只关心用户键入的字符,则应处理键入的事件.如果您关心用户按下/释放哪些键,您应该处理按键/释放键事件.
如果你想要textfield的值使用keyReleased(KeyEvent e)作为
JTextField txt = (JTextField) e.getSource();
System.out.println(txt.getText());
Run Code Online (Sandbox Code Playgroud)
你可以在这里找到一个例子
您也可以使用DocumentListener.
| 归档时间: |
|
| 查看次数: |
6211 次 |
| 最近记录: |