Duvida: Pular para o próximo campo de texto automaticamente
4 respostas
G
gouveiarocha
Olá Galera, boa tarde!!
Preciso de um help - eu quero que no meu sistema, quando o usuário atingir o máximo na caixa de texto, ele ‘pule’ para outra caixa de texto que eu definir - evitando do usuário precisar clicar ou apertar tab.
Jonathan, funcionou direitinho, mas agora surgiu um desafio que não estou conseguindo resolver.
Seguinte, alguns textfields podem ter 1 ou 2 letras e ai eu preciso que o limite seja 1 ou 2 - isso vai depender se o usuario digitar 1 ou 2 letras.
Jonathan_Medeiros
Você tem que implementar uma classe que faça esse trabalho pra você utilizando o PlainDocument.
Exemplo:
publicclassFixedLengthDocumentextendsPlainDocument{privatefinalintiMaxLength;publicFixedLengthDocument(intmaxlen){super();iMaxLength=maxlen;}@OverridepublicvoidinsertString(intoffset,Stringstr,AttributeSetattr)throwsBadLocationException{if(str==null){return;}if(iMaxLength<=0){// aceitara qualquer no. de caracteressuper.insertString(offset,str,attr);return;}intilen=(getLength()+str.length());if(ilen<=iMaxLength){// se o comprimento final for menor...super.insertString(offset,str,attr);// ...aceita str}else{if(getLength()==iMaxLength){return;// nada a fazer}StringnewStr=str.substring(0,(iMaxLength-getLength()));super.insertString(offset,newStr,attr);}}}
Com a classe implementada basta limitar o campo no construtor da classe.
Exemplo:
jTextField.setDocument(new FixedLengthDocument(2)); //Limitará o campo em 2 caracteres