MaskFormater e JTextField

Estou com o seguinte problema:

Tenho um campo na minha aplicação que mé um JTextField e preciso digitar o peso do paciente.

O que acontece é que preciso padronizar e exibir sempre 1 casa decimal apenas e o peso do paciente pode ter de 0 a mais de 100 dependendo do peso.

Como faço uma mascara para que ao digitar o texto exiba sempre o ponto e à medida em que for digitando os números o ponto fique sempre separando o último digito digitado dos digitos anteriores?

ex: 120.5 Kg
.1 -> 1.2 -> 12.0 -> 120.5

ununes
faz o seguinte:
em vez de vc usar o JTextField utilize o JFormattedTextField, no meu caso eu faço dessa forma

DecimalFormat decimal = new DecimalFormat("#,###.0");
			NumberFormatter numFormatter = new NumberFormatter(decimal);
			numFormatter.setFormat(decimal);
			numFormatter.setAllowsInvalid(false);
			textFieldTeste = new JFormattedTextField();
			textFieldTeste .setFormatterFactory( new DefaultFormatterFactory(numFormatter));

Espero que de certo para vc!

Um outro exemplo…

MaskFormatter mascaraCPF = new MaskFormatter("###.###.###-##");

JFormattedTextField inputCPF = new JFormattedTextField(Estaticos.mascaraCPF);

E uma cola para gerar as máscaras:


Char 	Description
# 	Any valid number, uses Character.isDigit .
' 	Escape character, used to escape any of the special formatting characters.
U 	Any character ( Character.isLetter ). All lowercase letters are mapped to upper case.
L 	Any character ( Character.isLetter ). All upper case letters are mapped to lower case.
A 	Any character or number ( Character.isLetter or Character.isDigit )
? 	Any character ( Character.isLetter ).
 * 	Anything.
H 	Any hex character (0-9, a-f or A-F).

boa tarde pessoal …

euvi esse exemplo do griciolli … e ele funcionou bem …
para meu exemplo ficou assim DecimalFormat decimal = new DecimalFormat("#,###.##"); NumberFormatter numFormatter = new NumberFormatter(decimal); numFormatter.setFormat(decimal); numFormatter.setAllowsInvalid(false); txt_prod_peso = new JFormattedTextField(); ((JFormattedTextField) txt_prod_peso) .setFormatterFactory( new DefaultFormatterFactory(numFormatter));
porem o que veio à tela foi algo do tipo … ’ 1.222.333’ nao veio a virgula … só 2 pontos … (apesar de que para o peso nao é tao importante)

haa sim … quase esqueci … após digitar numeros … se eu tento apagar os numeros … ele sempre deixa o ultimo numero na tela nao permitindo que seja apagado … bloqueia que seja apagado … alguem sabe o por que ?

haa sm … e esse exemplo sobre CPF … poderia mandar ele completo Emoretto ? … me parece estar faltando algo…

eu cheguei a fazer um parecido para CPF mas o que eu fiz esta com erro … por que os pontos e o traço ficam fixos na tela … ao inves de aparecerem quando alcançados …

é só isso que tenho duvidas no momento . vlw galera … brigadao pela dica de peso :smiley: