Java文本域十进制验证

时间:2011-10-26 15:27:51

标签: java swing format double decimal

如何验证用户输入仅包含2位小数的5位数。我使用下面的代码检查5位数,但如何检查2位小数。

if (!id.equals("")) {
        try {
            Integer.parseInt(id);
            if (id.length() <= 5) {
                return true;
            }
        } catch (NumberFormatException nfe) {
            return false;
        }
    }

3 个答案:

答案 0 :(得分:5)

DecimalFormat课程将帮助您解决这个问题。您可以检查是否可以根据特定模式解析用户输入。

commons-validator library wraps this up in a convenient method call

答案 1 :(得分:3)

if(id.matches("\\d{5}\\.\\d{2}"))
    return true;
return false;

答案 2 :(得分:3)

可以使用InputVerifier执行Swing中的任何验证。

  1. 首先创建自己的输入验证程序

    public class MyInputVerifier extends InputVerifier {
        public boolean verify(JComponent input) {
            String text = ((JTextField) input).getText();
            try {
                BigDecimal value = new BigDecimal(text);
                return (value.scale() <= Math.abs(2)); 
            } catch (NumberFormatException e) {
                return false;
            }
        }
    }
    
  2. 然后将该类的实例分配给您的文本字段。 (实际上任何JComponent都可以验证)

  3. myTextField.setInputVerifier(new MyInputVerifier()); 当然你也可以使用匿名内部类,但如果验证器也用于其他组件,那么普通类就更好了。

    另请参阅SDK文档:JComponent#setInputVerifier。