-1

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

   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");
        }
        }
           });
4

2 回答 2

2

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

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

  • JFormattedTextField是用于验证用户输入的文本字段。它需要一些调整来提高可用性(例如,参见这篇博文
  • 使用InputVerifier. 这里没有链接,因为我不喜欢这种机制。只是为了完整性而提及它
  • 使用 aDocumentListener而不是 aKeyListener,这可以抑制某些输入,并且在使用拖放或复制粘贴时也可以使用,这对您的情况不适用KeyListener

示例可以在链接中找到。

于 2012-08-03T15:39:49.273 回答
2

有更好的方法来完成你想要的。

查看JFormattedTextField

于 2012-08-03T14:26:36.147 回答