如何防止用户输入数值

时间:2014-01-23 15:10:46

标签: java swing validation actionlistener jtextfield

我正在为俱乐部创建GUI并尝试设置测试,以便在提示新用户输入其名称时,他们将无法输入任何数值。

这是我到目前为止的代码:

else if((this.jTextFieldName.getText() ){
        errorMessage = "Name is not acceptable";
        this.jTextFieldNameActionPerformed(requestFocusInWindow());
}

第一行中getText()之后的空格是我需要输入测试的地方,但我找不到这样做的方法。 有人可以帮忙吗?

4 个答案:

答案 0 :(得分:4)

摆动的最佳方式是使用PlainDocument作为textComponent的文档。这是使用DocumentFilter。在Text Component Features implementing a DocumentFilter中查看如何执行此操作。您必须覆盖ìnsertString方法,然后才能使用正则表达式。在这里,您使用DocumentFilter example

答案 1 :(得分:1)

为什么不尝试使用正则表达式?

else if(this.jTextFieldName.getText().matches(".*\\d+.*") ){

答案 2 :(得分:0)

如果可以,那么

jTextField.addKeyListener(new KeyAdapter() {
    public void keyTyped(KeyEvent e) {
      char c = e.getKeyChar();
      if (!((c >= 'a') && (c <= 'z') || (c >= 'A') && (c <= 'Z') ||
         (c == KeyEvent.VK_BACK_SPACE) ||
         (c == KeyEvent.VK_DELETE))) {
        getToolkit().beep();
        //JOptionPane.showMessageDialog(rootPane, "Enter only Alphabets");
        e.consume();
      }
    }
  });

答案 3 :(得分:0)

尝试使用正则表达式^[0-9]+$

您可以像这样实现:

this.jTextFieldName.getText().matches("^[0-9]+$")