Пример входных данных: 12345,1не в состоянии SetText на AddListener на текстового поля
Желаемая на выводе totalAmountDueTextField: 12,345.10
TextField totalAmountDueTextField = new TextField("0.00");
Pattern validDoubleText = Pattern.compile("-?\\d*(\\.\\d{0,2})?");
TextFormatter<Double> textFormatter = new TextFormatter<>(new DoubleStringConverter(), 0.00,
change -> {
String newText = change.getControlNewText() ;
if (validDoubleText.matcher(newText).matches()) {
return change ;
} else return null ;
});
totalAmountDueTextField.setTextFormatter(textFormatter)
totalAmountDueTextField.focusedProperty().addListener(new ChangeListener() {
@Override
public void changed(ObservableValue o, Object oldVal, Object newVal) {
DecimalFormat format = new DecimalFormat("#,##0.00");
String formattedText = format.format(Double.parseDouble(totalAmountDueTextField.getText()));
System.out.println(formattedText);
totalAmountDueTextField.setText(formattedText);
}
});
Фактический результат
System.out.println (FormattedText): 12,345.10 // ОК
totalAmountDueTextField.setText (formattedText): 12345.1 // Это проблема.
А также, как установить начальное значение 0,00 (ток 0,0)?
Возможно, это поможет http://stackoverflow.com/questions/12962515/right-pad-with-zeros – Ezio