[英]KeyListener does not respond if there is any input in JTextField
[英]JTextField Keylistener can't erase input
我有一个JTextField,当有人输入数字而不是字母时,它可以正常工作。 我唯一的问题是那个数字不会消失。 用户不能输入任何其他数字,但最后一个数字始终保持在归档中! 为什么?
searchF.addKeyListener(new KeyAdapter(){
public void keyTyped(KeyEvent e){
char ch = e.getKeyChar();
if(Character.isDigit(ch)){
searchF.setText(" ");
JOptionPane.showMessageDialog(null, "Please Enter Only Names or Surnames. Letters Only Allowed");
searchF.setText(" ");
}
}
});
这是另一种解决问题的方法,如果它是一个数字,请使用关键事件,这样用户不会丢失输入但仍然会收到消息。
if(Character.isDigit(ch)){
JOptionPane.showMessageDialog(null, "Please Enter Only Names or Surnames. Letters Only Allowed");
e.consume();
}
在TextField
处理之前,您将获得该事件。 您可以做的是使用事件, TextField
将不会接收它。
(更好的方法可能是DocumentFilter
,您仍然可以使用KeyListener
将数字复制粘贴到TextField
。)
我有一个JTextField,当有人输入数字而不是字母时,它可以正常工作。 我唯一的问题是那个数字不会消失。
KeyListener的是不正确的Listener
的Swing JComponents
,也不JTextComponents
将DocumentFilter用于普通的香草JTextField
将JFormattedTextField与Number Formatter
从侦听器触发的事件内的JOptionPane必须包装到invokeLater
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.