JFormattedTextField

6 respostas
ronnypeterson

Tenho um campo no qual apliquei uma máscara, então pergunto:

Existe alguma forma de o focus ir p outro campo assim q o usuário digitar um valor válido, ou seja, sem a necessidade de clica em TAB ou usar o mouse?

Desde já agradeço a atenção e colaboração de todos!

6 Respostas

T

usa requestFocus(), para dar o foco no campo desejado.

até mais.

ronnypeterson

Blz, mas o problema q tenho é fazer com q esse requestFocus() seja disparado automaticamente assim o usuario digitar o último caracter no campo com a máscara…gostaria de saber se existe algum método q faça isso?

ronnypeterson

Consegui resolver…criei uma variável p ser o contador e assim q o usuário clicar o tamanho de meu campo o focus vai p o próximo campo.

...
maskTel.addKeyListener(new java.awt.event.KeyAdapter() 
			{
				public void keyPressed(java.awt.event.KeyEvent e) 
				{
					if( cont_tel_res >= 9)
					{
						cont_tel_res = 0; //zera o contador
						mask_tel_res_alt.requestFocus();						
					}					
					
					cont_tel_res++;
				}
			});
...
LuizLG

Certo, e se ele quiser apertar backspace para apagar o valor e digitar denovo? Continua rolando o contador… =p

Acho que seria melhor você verificar se ele preencheu todos os caracteres para, então, disparar o requestFocus().

ronnypeterson

Pois é brother (LuizLG), tava precisando de algo assim como vc falou…o q fiz foi uma gamb. Mas qual método uso p saber q o usuário digitou todos os caracteres válidos??? (Inclusive, essa fora minha pergunta inicial)

Mas valeu pela atenção e se souber como posso fazer isso manda um exemplo.

LuizLG

Como está sua mascara? Quais as condições para validar?

Por exemplo: minha mascara esta para aceitar só hexadecimal
fmt = new MaskFormatter("HHH HHH");
    fmt.setPlaceholderCharacter('X');
E esta iniciada com X
XXX XXX
Chamo o verificaTexto quando for digitado algo..
if (verificaTexto(field))
    proxComp.requestFocus();
}
public boolean verificaTexto(JComponent input) {
        JTextField tf = (JTextField) input;
        String texto = tf.getText();

        if (texto.contains("X") )
            return false;
        else
            return true;
    }

Bom, é uma possibilidade...

Criado 12 de junho de 2007
Ultima resposta 12 de jun. de 2007
Respostas 6
Participantes 3