2017-02-20 5 views
0

Beispiel Eingabe setText: 12.345,1nicht in der Lage auf Textfeld auf addListener

Wunsch ouput auf 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); 
     } 
    }); 

Tatsächliches Ergebnis

System.out.println (FormattedText): 12,345.10 // OK

totalAmountDueTextField.setText (formatiertText): 12345.1 // Dies ist das Problem.

Und auch, wie man den Anfangswert auf 0.00 setzt (Strom ist 0.0)?

+0

vielleicht hilft dies http://stackoverflow.com/questions/12962515/right-pad-with-zeros – Ezio

Antwort

0

Verwendung dieses für Sie hilfreich sein

totalAmountDueTextField.setText (. Neue BigDecimal (totalAmountDueTextField.getText()) setScale (2, RoundingMode.FLOOR));

Verwandte Themen