2017-02-20 15 views
0

Пример входных данных: 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)?

+0

Возможно, это поможет http://stackoverflow.com/questions/12962515/right-pad-with-zeros – Ezio

ответ

0

использовать это один может быть полезным для вас

totalAmountDueTextField.setText (. Новый BigDecimal (totalAmountDueTextField.getText()) setScale (2, RoundingMode.FLOOR));

 Смежные вопросы

  • Нет связанных вопросов^_^