[RESOLVIDO] JTextField + Mascara

4 respostas
programaçãojava
B

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.

4 Respostas

R

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

B

Ótima solução!!! Obrigado

B

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.

}

}
R

Boa mano!!!

Criado 5 de setembro de 2018
Ultima resposta 7 de set. de 2018
Respostas 4
Participantes 2