These examples of validators use the NumberFormat.getInstance() method to retrieve a formatter. Each validator also makes sure that the field being validated has been filled.
FORMATTEDNUMBERVALIDATOR.JAVA
package com.interactive.intviewer.util.validators;import java.text.NumberFormat;import java.text.ParsePosition;import org.netbeans.validation.api.Problems;import org.netbeans.validation.api.Validator;public class FormattedNumberValidator implements Validator<String> { public FormattedNumberValidator() { } @Override public boolean validate(Problems problems, String compName, String model) { if ((model != null) && (model.length() > 0)) { NumberFormat numberFormat1 = NumberFormat.getInstance(); ParsePosition position = new ParsePosition(0); numberFormat1.parseObject(model, position); if (position.getIndex() < model.length()) { problems.add("'" + model + "' is not a number"); return false; } else { return true; } } else { return true; // should be handled by another validator } }}FORMATTEDINTEGERVALIDATOR.JAVA
package com.interactive.intviewer.util.validators;import java.text.NumberFormat;import java.text.ParseException;import java.text.ParsePosition;import org.netbeans.validation.api.Problems;import org.netbeans.validation.api.Validator;public class FormattedIntegerValidator implements Validator<String> { public FormattedIntegerValidator() { } @Override public boolean validate(Problems problems, String compName, String model) { if ((model != null) && (model.length() > 0)) { NumberFormat numberFormat1 = NumberFormat.getInstance(); ParsePosition position = new ParsePosition(0); Object result = numberFormat1.parseObject(model, position); if (position.getIndex() < model.length()) { problems.add("'" + model + "' is not an integer"); return false; } else { try { String resultString = result.toString(); Integer.parseInt(resultString); return true; } catch (NumberFormatException ex2) { problems.add("'" + model + "' is not an integer"); return false; } } } else { return true; // should be handled by another validator } }}FORMATTEDNUMBERRANGEVALIDATOR.JAVA
package com.interactive.intviewer.util.validators;import com.interactive.intviewer.util.NumberUtils;import java.text.NumberFormat;import java.text.ParseException;import org.netbeans.validation.api.Problems;import org.netbeans.validation.api.Validator;public class FormattedNumberRangeValidator implements Validator<String> { private Number max; private Number min; public FormattedNumberRangeValidator(Number min, Number max) { this.min = min; this.max = max; } @Override public boolean validate(Problems problems, String compName, String model) { if ((model != null) && (model.length() > 0)) { NumberFormat formatter = NumberFormat.getInstance(); try { Number val = formatter.parse(model); double minn = min.doubleValue(); double maxx = max.doubleValue(); boolean result = val.doubleValue() >= minn && val.doubleValue() <= maxx; if (!result) { NumberFormat formatterMin = NumberUtils.getDoubleNumberFormat(minn); NumberFormat formatterMax = NumberUtils.getDoubleNumberFormat(maxx); problems.add(compName + " must be between " + formatterMin.format(minn) + " and " + formatterMax.format(maxx)); } return result; } catch (ParseException ex) { return true; //should be handled by another validator } } else { return true; //should be handled by another validator } }}FORMATTEDBOUNDARIESVALIDATOR.JAVA
package com.interactive.intviewer.util.validators;import java.text.NumberFormat;import java.text.ParseException;import javax.swing.JTextField;import org.netbeans.validation.api.Problems;import org.netbeans.validation.api.Validator;public class FormattedBoundariesValidator implements Validator<String> { private JTextField lowerBoundaryField; public FormattedBoundariesValidator(JTextField lowerBoundaryField) { this.lowerBoundaryField = lowerBoundaryField; } @Override public boolean validate(Problems problems, String compName, String model) { if ((model != null) && (model.length() > 0)) { NumberFormat formatter = NumberFormat.getInstance(); try { double lowerBoundary = formatter.parse(lowerBoundaryField.getText()).doubleValue(); double upperBoundary = formatter.parse(model).doubleValue(); if (upperBoundary < lowerBoundary) { String message = compName + " must be greater than " + lowerBoundaryField.getName(); problems.add(message); return false; } else { return true; } } catch (ParseException ex) { return true; // should be taken care of by another validator } } else { return true; // should be taken care of by another validator } }}