【问题标题】:Java textfield decimal validationJava 文本字段十进制验证
【发布时间】:2011-12-15 20:11:22
【问题描述】:

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

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

【问题讨论】:

标签: java swing format double decimal


【解决方案1】:

DecimalFormat 类将极大地帮助您解决此问题。您可以检查是否可以根据特定模式解析用户输入。

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

【讨论】:

    【解决方案2】:
    if(id.matches("\\d{5}\\.\\d{2}"))
        return true;
    return false;
    

    【讨论】:

    • 好吧,除了他想要“最多 5 个”,而不是“正好 5 个”。
    【解决方案3】:

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

    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 都可以验证)

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

    还可以查看 SDK 文档:JComponent#setInputVerifier。

    【讨论】:

      猜你喜欢
      • 2016-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-28
      • 2016-11-08
      • 1970-01-01
      • 2014-04-30
      相关资源
      最近更新 更多