@JNMarcos I do not believe it exists without extending and creating your own FormatterFactory. But you can use a simple solution like:
jFormattedTextField.setFocusLostBehavior(JFormattedTextField.PERSIST);
This way when the formattedTextField loses its focus it will not erase the value of the field. (This will transform your formattedTextField into a normal jTextField.)
You can use a field and treat with a listener event the value:
field.addFocusListener (new FocusAdapter () {
@Override
public void focusLost(FocusEvent e) {
jFormattedTextField.addFocusListener(new FocusAdapter() {
@Override
public void focusLost(FocusEvent e) {
String text = jFormattedTextField.getText();
if (!text.isEmpty()) {
int indexOf = text.indexOf(",");//index da vírgula, se é -1 é por que não existe.
if (indexOf == -1) {//não existe vírgula, então completa-se com ",00"
text = text + ",00";
} else {
String aposVirgula = text.substring(indexOf + 1);
int decimais = aposVirgula.length();//obtém o tamanho do texto após a vírgula
if (decimais == 0) {//se Zero, é porque o valor está dessa forma "1000,"
text = text + "00";//então completa-se com o 2 zeros
} else if (decimais == 1) {// se Um então , é porque o valor está dessa forma "1000,0"
text = text + "0";//então completa-se com o 1 zero
}
}
try {
//Fazendo isso, note que seu field permite que insira caracteres. Por isso você precisará checar se o valor é um numero válido.
Float.valueOf(text.replace(",", "."));
} catch (NumberFormatException er) {
text = null;
}
field.setText(text);
}
}
});
I suggest you to use use one Document in JTextField instead of this code.