我有一个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(" ");
}
}
});
答案 0 :(得分:4)
这是另一种解决问题的方法,如果它是一个数字,请使用关键事件,这样用户不会丢失输入但仍然会收到消息。
if(Character.isDigit(ch)){
JOptionPane.showMessageDialog(null, "Please Enter Only Names or Surnames. Letters Only Allowed");
e.consume();
}
答案 1 :(得分:3)
在TextField
处理之前,您将获得该事件。
你可以做的是consume事件,TextField
将不会收到它。
(更好的方法可能是DocumentFilter
,您仍然可以使用TextField
将数字复制粘贴到KeyListener
。)
答案 2 :(得分:3)
我有一个JTextField,当有人进入时,它可以正常工作 数字而不是字母。我唯一的问题是那个数字 然后不会消失。
KeyListener不适用于Listener
Swing JComponents
,也不适用于JTextComponents
将DocumentFilter用于普通香草JTextField
将JFormattedTextField与Number Formatter
JOptionPane必须包含在invokeLater