出现对话框,只允许使用字符,但在对话框中单击“确定”后,数字也会输入到文本字段中

时间:2012-08-03 14:19:26

标签: java swing

数字也会输入名称文本字段,此代码无法正常工作。请以身作则帮助我。

   Name_text.addKeyListener(new KeyAdapter() { 

        @Override
        public void keyTyped(KeyEvent e) {
           if(e.getKeyChar()>='0'&& e.getKeyChar()<='9'|| e.getKeyChar()>=33&& e.getKeyChar()<=47|| e.getKeyChar()>=58&& e.getKeyChar()<=64 || e.getKeyChar()>=91&& e.getKeyChar()<=96 || e.getKeyChar()>=123&& e.getKeyChar()<=127 ){
          JOptionPane.showMessageDialog(null, "enter characters only");
        }
        }
           });

2 个答案:

答案 0 :(得分:2)

有更好的方法可以达到你想要的效果。

查看JFormattedTextField

答案 1 :(得分:2)

您发布的代码只显示一个对话框,抱怨不允许使用数字(带有难看的检查,正则表达式[0-9]出了什么问题),但它不会删除输入。

此外,正如其他答案中所述,有内置的验证机制或更好的方法,然后使用KeyListener

  • JFormattedTextField是用于验证用户输入的文本字段。它需要一些调整来提高可用性(例如参见this blogpost
  • 使用InputVerifier。这里没有链接,因为我不喜欢这个机制。只是提到它的完整性
  • 使用DocumentListener instead of a KeyListener可以禁止某些输入,并且在使用拖放或复制粘贴时也可以使用KeyListener

可以在链接中找到示例。