JTextField Keylistener无法擦除输入

时间:2013-10-07 12:25:17

标签: java swing jtextfield keylistener joptionpane

我有一个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(" ");
                   }
               }
 });

3 个答案:

答案 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,当有人进入时,它可以正常工作   数字而不是字母。我唯一的问题是那个数字   然后不会消失。