Boa tarde pessoal, tenho um JFormattedTexfField ( txtValor ) que recebe uma máscara de DecimalFormat.
Eu digito por exemplo: 1000… quando o foco sai do txtValor o campo é formatado para 1.000,00. Até aí tudo está perfeito!
O problema é que a classe JFormattedTexfField é cheia de bugs, se eu digito um valor, tiro o foco do txtValor , volto ao txtValor e apago o valor digitado, o último valor válido que foi digitado aparece no campo.
Então tentei usar o setFocusLostBehavior(JFormattedTextField.COMMIT), mas o problema é que se o usuário digitar um “espaço” ou um outro caracter qualquer que não seja um número ou uma vírgula antes do valor, a formatação se perde! :?:
Como posso resolver isso?
Segue abaixo o código em questão…
DecimalFormat decimal = new DecimalFormat("#,###,###.00");
NumberFormatter numFormatter = new NumberFormatter(decimal);
numFormatter.setFormat(decimal);
txtvlr.setFormatterFactory(new DefaultFormatterFactory(numFormatter));
txtvlr.setFocusLostBehavior(JFormattedTextField.COMMIT);