[RESOLVIDO] JTextField + Mascara

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!!!