package org.esa.snap.ui; import javax.swing.JFormattedTextField; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; import java.text.ParseException; import java.util.Locale; /** * A formatter to be used for decimal number in a {@link JFormattedTextField} * * @see JFormattedTextField.AbstractFormatter * @author Marco Peters */ public class DecimalFormatter extends JFormattedTextField.AbstractFormatter { private final DecimalFormat format; public DecimalFormatter(String pattern) { final DecimalFormatSymbols decimalFormatSymbols = new DecimalFormatSymbols(Locale.ENGLISH); format = new DecimalFormat(pattern, decimalFormatSymbols); format.setParseIntegerOnly(false); format.setParseBigDecimal(false); format.setDecimalSeparatorAlwaysShown(true); } @Override public Object stringToValue(String text) throws ParseException { return format.parse(text).doubleValue(); } @Override public String valueToString(Object value) throws ParseException { if (value == null) { return ""; } return format.format(value); } }