检查 JTextField 是否为数字

5

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

4个回答

11
尝试执行Integer.parseInt(yourString),如果它抛出一个NumberFormatException异常,你就会知道这个字符串不是一个有效的整数
try {
     Integer.parseInt(myString);
     System.out.println("An integer"):
}
catch (NumberFormatException e) {
     //Not an integer
}

另一个选择是正则表达式:

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

抱歉!我本来是想编辑我的内容,而不是你的。已经回滚了,真的很抱歉!=| - maerics
你在这里漏了一个分号:System.out.println("An integer"); - Apopei Andrei Ionut
2
我也认为(NumberFormatException)需要改成(NumberFormatException e) - Admin Voter

4

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.
  }
}

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();
       }
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接