我声明了一个TextField input = new TextField("请输入键值");
input.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if(input.getText().equals(new String("请输入键值"))) {
//int i = e.getKeyCode();
input.setText("");
//System.out.println(i);
}
}
}); 然后我就是想不明白了,在我随便按下一个键之后,为什么在TextField中这个按键会被显示出来呢?我不是调用了input.setText("")方法吗?应该为空啊
input.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if(input.getText().equals(new String("请输入键值"))) {
//int i = e.getKeyCode();
input.setText("");
//System.out.println(i);
}
}
}); 然后我就是想不明白了,在我随便按下一个键之后,为什么在TextField中这个按键会被显示出来呢?我不是调用了input.setText("")方法吗?应该为空啊
public void keyTyped(KeyEvent e)
键入某个键时调用此方法。当按下键然后又释放该键时发生此事件。
现在楼主你写的方法是按下某键时会执行方法里的代码,
但是放开那个键后,TextField里肯定会有你按的键值。
我想原因是:即使你不增加监听器,输入一个字符后,仍然会显示出来。
这就是说,虽然你的方法里,已经将其置为空了,但之后,TextField自身功能仍会将你输入的字符显示出来的。这个不是由按键事件产生的!
至于怎样才能达到LZ希望的目标,我也不知道。或许可能考虑正则表达式或Document。
input.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
e.setKeyCode(KeyEvent.VK_CANCEL);
e.setKeyChar((char)0);
System.out.println("abcdef");
} @Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
e.setKeyCode(KeyEvent.VK_CANCEL);
e.setKeyChar((char)0);
}
});
这样的代码可以不响应输入。