Quando crio um JFormattedTextField como o formato “#,##0.00” e esbaleço por exemplo no maximo dez digitos inteiro, na hora que e dada a entrada de dados e é atingida a capacidade maxima, o primeiro digito que foi inserido e apagado.
Por exemplo, um field com no maximo 4 digitos:
1,234.00
Quando eu digito um 5 ocorre o problema
2,345.00 e o cursor passa para o lado das casas decimais.
Alguem ja passou por esta situação?
Se alguem souber como resolver ou conhecer um tutorial detalhado
sobre este componente, ficarei muito grato.
Eu ate sei como usar com o MaskFormatter para fazer um formato para CPF por exemplo, o unico problema e em relação as Numeros mesmo.
import javax.swing.*;
import javax.swing.text.*;
import java.awt.*;
import java.text.*;
public class Teste extends JFrame {
JFormattedTextField tf;
NumberFormatter nf;
DecimalFormat df;
public Teste() {
this.setSize(200, 200);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
df = new DecimalFormat("#,##0.00");
df.setMaximumIntegerDigits(5);
nf = new NumberFormatter(df);
nf.setAllowsInvalid(false);
nf.setOverwriteMode(false);
tf = new JFormattedTextField();
tf.setHorizontalAlignment(JTextField.RIGHT);
nf.install(tf);
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(tf, BorderLayout.NORTH);
this.show();
}
public static void main(String[] args) {
new Teste();
}
}
Quando e dada entrada de dados no field, no momento em que ele chega ao limite e vc digita mais um, ele exclui o primeiro item e passa para o lado das casas decimais. Muito estranho!