Ajuda - Campo CPF em Java

2 respostas
java
K

Gostaria de ajuda para solução com um problema relacionado a um campo para digitação de CPF. Vou tentar ser o mais claro possível na explicação.

O que eu preciso seria semelhante a uma máscara, mas gostaria que os símbolos utilizados fossem aparecendo à medida que vou digitando o CPF, parecido com aquele para campo monetário, que não precisa ficar digitando a vírgula. Consegui iniciar, mas estou com dificuldades para dar continuidade.

Abaixo segue um código que comecei a ter algum resultado.

> package outros;

> import javax.swing.text.*;

> public class DocumentCPF extends PlainDocument {
>     public void insertString(int off, String str, AttributeSet a) throws BadLocationException {
>         if (str.length() == 1) {
>             if (off < 14) {
>                 if (off == 3 || off == 7) {
>                     str = "." + str;
>                 }
>                 if (off == 11) {
>                     str = "-" + str;
>                 }
>                 super.insertString(off, str, a);
>             }
>         } else {
>             String cpf = this.getText(0, this.getLength());
>             cpf = cpf.replace(".", "").replace("-", "");
>             
>             StringBuilder strB = new StringBuilder(str);
>             if (str.length() > 9) {
>                 strB.insert(3, ".").insert(7, ".").insert(11, "-");
>             } else if (str.length() > 6) {
>                 strB.insert(3, ".").insert(7, ".");
>             } else if (str.length() > 3) {
>                 strB.insert(3, ".");
>             }
>             super.insertString(off, strB.toString(), a);
>         }
>     }
> }

Com este código, quando digito, já tem o efeito que preciso, mas não estou conseguindo implementar quando apago o conteúdo com delete ou backspace para atualizar a formatação enquanto estou fazendo a alteração.

Não quero usar máscara pois fica um pouco “deselegante”, pois ela mostra os símbolos antes mesmo de digitar qualquer coisa. Eu quero incluir o símbolo à medida que forem necessário.

2 Respostas

M

olá…bom dia !! Uma sugestão !!! Porque ao invés de formatar o campo conforme for digitando, você poderia formatar após o campo perder o foco, se precisar voltar no campo, retira a maskara quando o campo ganhar o foco. Em meu sistema, no mesmo campo válido o conteúdo se for CPF | CNPJ conforme o tamanho de caracteres, e aplico a maskara após o campo perder o foco, se preciso voltar , formato novamente o campo e retiro a maskara.

K

Já pensei nesta possibilidade, mas vi na internet um site com cadastro utilizando javascript e achei muito legal. Com isso estou tentando implementar a mesma funcionalidade em java.

Criado 18 de fevereiro de 2016
Ultima resposta 27 de fev. de 2016
Respostas 2
Participantes 2