Olá,
Preciso utilizar 1 campo de texto para CPF e CNPJ mas gostaria de utilizar uma máscara, que … quando os números forem menores que 11, a mascara seja de CPF, mas quando for maior, a mascara seja de CNPJ.
Segue em anexo o print do formulário.
Costumo usar isso no evento de FocusLost
String campo = jTextField1.getText();
if (campo.length() == 11) {//CPF
String cpf;
cpf = String.valueOf("" + campo.charAt(0) + campo.charAt(1) + campo.charAt(2) + "." + campo.charAt(3) + campo.charAt(4) + campo.charAt(5) + "." + campo.charAt(6) + campo.charAt(7) + campo.charAt(8) + "-" + campo.charAt(9) + campo.charAt(10));
jTextField1.setText(cpf);
} else if (campo.length() == 14) {//CNPJ
String cnpj;
cnpj = String.valueOf("" + campo.charAt(0) + campo.charAt(1) + "." + campo.charAt(2) + campo.charAt(3) + campo.charAt(4) + "." + campo.charAt(5) + campo.charAt(6) + campo.charAt(7) + "/" + campo.charAt(8) + campo.charAt(9) + campo.charAt(10) + campo.charAt(11) + "-" + campo.charAt(12) + campo.charAt(13));
jTextField1.setText(cnpj);
}
EDIT
Número menor que 11 não pode ser CPF, pq resultaria em CPF inválido, mesma coisa com o CNPJ
1 curtida
Ótima solução!!! Obrigado
Dei uma melhorada no código…
public void jtfMascara(int jtfLength) { //Função que recebe o tamanho do campo de texto.
String cpf = jtf_CPF.getText() + “”; //Pega o texto do TextField.
if (jtfLength == 11) {//CPF
jtf_CPF.setText(cpf.substring(0, 3) + “.” + cpf.substring(3, 6) + “.” + cpf.substring(6, 9) + “-” + cpf.substring(9, 11)); //Mascara CPF.
} else if (jtfLength == 14) {//CNPJ
jtf_CPF.setText(cpf.substring(0, 2) + “.” + cpf.substring(2, 5) + “.” + cpf.substring(5, 8) + “/” + cpf.substring(8, 12) + “-”);//Mascara CNPJ.
}
}
1 curtida
Boa mano!!!