检查JTextField是否为数字

时间:2011-08-01 03:19:07

标签: java jtextfield validation

快速问题:我有一个JTextField用于用户输入,在我的焦点监听器中,当JTextField失去焦点时,如何检查JTextField中的数据是否为数字?感谢

4 个答案:

答案 0 :(得分:10)

尝试执行Integer.parseInt(yourString),如果它抛出NumberFormatException,您就会知道字符串不是有效的integer

try {
     Integer.parseInt(myString);
     System.out.println("An integer"):
}
catch (NumberFormatException e) {
     //Not an integer
}

另一种选择是Regex:

boolean isInteger = Pattern.matches("^\d*$", myString);

答案 1 :(得分:3)

请参阅How to Use Formatted Text Fields

如果您不想使用带格式的文本字段,那么您应该使用InputVerifier,而不是FocusListener。

您还可以使用DocumentFilter过滤输入的文字。

答案 2 :(得分:2)

public void focusLost(FocusEvent fe) {
  String text = this.getText();
  try {
    double d = Double.parseDouble(text); 
    // or Integer.parseInt(text), etc.
    // OK, valid number.
  } catch (NumberFormatException nfe) {
    // Not a number.
  }
}

答案 3 :(得分:0)

我认为最好的方法是对JTextField使用KeyTyped侦听器,并检查您是否希望用户仅键入数字。这是一段代码:

private void jTextField5KeyTyped(java.awt.event.KeyEvent evt) {                                     
         //KEY TYPE FOR AGE
         char c = evt.getKeyChar();
       if(!(Character.isDigit(c) || (c==KeyEvent.VK_BACKSPACE) || c==KeyEvent.VK_DELETE)) {
           getToolkit().beep();
          evt.consume();
       }
    }