Java: JFormattedTextField che salva i numeri

Nella mia applicazione voglio inserire numeri (importi) su un limite specifico, e quindi ho usato JFormattedTextField. Limite come “12345678.99” cioè 8 cifre prima di “.” e 2 dopo “.” o così via. Questo è il mio codice di implementazione, ma non risulta come previsto.

startBalTxt.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.NumberFormatter(new java.text.DecimalFormat("########.##")))); startBalTxt.setText(resourceMap.getString("startBalTxt.text")); // NOI18N startBalTxt.setFont(Utility.getTextFont()); startBalTxt.setName("startBalTxt"); // NOI18N 

  INPUT RESULT "12345678905.99" => "12345678906" ==> Should give "12345678.99" or "12345679.99" "12345678.555" => "12345678.56" ==> CORRECT "1234567890123456" => "1234567890123456" ==> Absolutely wrong in all aspects 

Dove sto andando male? E come farlo funzionare come me lo aspetto.

AGGIORNAMENTI COME SUGGERITI da Stanislavl:

  numberFormat = (DecimalFormat) DecimalFormat.getNumberInstance(); numberFormat.setMaximumFractionDigits(2); numberFormat.setMaximumIntegerDigits(8); numberFormat.setMinimumFractionDigits(0); numberFormat.setMinimumIntegerDigits(2); nfr = new NumberFormatter(numberFormat); initComponents(); myParent = parent; this.startBalTxt.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(nfr)); Results -> 4562147896.45 == > 62,147,896.45 

È obbediente al limite, ma elimina i numeri precedenti invece che dopo. Intendo in 4562147896.45 anziché “45” “96” non dovrebbe essere eliminato.