Como validar o CPF com mascara em tempo de execução

6 respostas
THIAGOANALISTA

Procurei no fórum e não encontrei, eu tenho que validar o CPF do meu cadastro em tempo de execução, estou usando a mascara e um “JFormtextfiels…”, como fazer para validar este campo em tempo de execução? ao digitar saber se é válido ou não .Me ajudem por favor!!! Espero que entendam minha dúvida(nao saber fazer mesmo).

6 Respostas

A
Boa tarde Thiago, olha eu tenho um método aqui que valida o CPF com mascara, mas isso ocorre após ele clicar num possível "Botão" logo acaba sendo em tempo de execução, na verdade são dois métodos, o de validar CPF e o de RETIRAR A MASCARA, esse de retirar a mascara está dentro do método de da validar CPF, vou postar os dois métodos e o botão que valida!! Abraço!! MÉTODO QUE RETIRAR A MASCARA
private  String removeNaoNumericos(String entrada){
           // Padrão que caracteriza caracteres numéricos
           Pattern numericos = Pattern.compile("([0-9])");

           // Colocando o texto no padrão para ver o que encaixa
           Matcher encaixe = numericos.matcher(entrada);

           // Criando um buffer de saída, que é uma solução
           // mais otimizada do que ir concatenando uma String
          StringBuffer saida = new StringBuffer();

          // A cada número encontrado
          while(encaixe.find())
             // Adiciona-se esse número ao buffer
           saida.append(encaixe.group());

          // Devolvendo o buffer convertido em String
          return saida.toString();
       }
MÉTODO QUE VALIDA O CPF
private boolean validacaoCPF(String valor) {
             int     d1, d2;
             int     digito1, digito2, resto;
             int     digitoCPF;
             String  nDigResult;
             String cpf = removeNaoNumericos(valor);//NESSA PARTE CHAMEI O MÉTODO QUE
                                                                         // RETIRA A MASCARA
             d1 = d2 = 0;
            digito1 = digito2 = resto = 0;

             for (int nCount = 1; nCount < cpf.length() -1; nCount++)
             {
                digitoCPF = Integer.valueOf (cpf.substring(nCount -1, nCount)).intValue();

                //multiplique a ultima casa por 2 a seguinte por 3 a seguinte por 4 e assim por diante.
                d1 = d1 + ( 11 - nCount ) * digitoCPF;

                //para o segundo digito repita o procedimento incluindo o primeiro digito calculado no passo anterior.
                d2 = d2 + ( 12 - nCount ) * digitoCPF;
             };

             //Primeiro resto da divisão por 11.
             resto = (d1 % 11);

             //Se o resultado for 0 ou 1 o digito é 0 caso contrário o digito é 11 menos o resultado anterior.
             if (resto < 2)
                digito1 = 0;
             else
                digito1 = 11 - resto;

             d2 += 2 * digito1;

             //Segundo resto da divisão por 11.
             resto = (d2 % 11);


             //Se o resultado for 0 ou 1 o digito é 0 caso contrário o digito é 11 menos o resultado anterior.
             if (resto < 2)
                digito2 = 0;
             else
                digito2 = 11 - resto;

             //Digito verificador do CPF que está sendo validado.
             String nDigVerific = cpf.substring (cpf.length()-2, cpf.length());
             //Concatenando o primeiro resto com o segundo.
             nDigResult = String.valueOf(digito1) + String.valueOf(digito2);

             //comparar o digito verificador do cpf com o primeiro resto + o segundo resto.
            return nDigVerific.equals(nDigResult);

   }
BOTÃO QUE VALIDA O CPF
private void bt_cadastrarActionPerformed(java.awt.event.ActionEvent evt) {                                             

        if(evt.getSource() == bt_cadastrar)
        {
             
                if(!this.validacaoCPF(valorCPF))
                {
                        JOptionPane.showMessageDialog(null,"CPF Inválido");
                        tf_cpf.setText("");
                }
        }

:twisted:

L

Você pode também, aproveitar o metodo que o amigo acima mostrou, e colocar ele dentro do evento de KeyRelease(Acho que eh assim que se escreve) assim cada vez que o usuário digitar um numero, ao soltar a tecla você chama a função do Anderson…

abraço

THIAGOANALISTA

Uma dúvida aqui, o que seria if(!this.validacaoCPF(valorCPF)) //valorCPF

devo criar um campo valorCPF?

A

THIAGOANALISTA:
Uma dúvida aqui, o que seria if(!this.validacaoCPF(valorCPF)) //valorCPF

devo criar um campo valorCPF?

este é o valor que vc deve passar como parametro para o método. Não precisa ser necessariamente um atributo de sua classe, pode ser a propriedade Text de seu componente mesmo, ou variável, ou o que vc preferir =]

THIAGOANALISTA

Criar o campo agora na hora de salvar deu estes erros:

Usei as classes, para formatar usei:

txtCpf.setFocusLostBehavior(javax.swing.JFormattedTextField.PERSIST); try { txtCpf.setFormatterFactory(new DefaultFormatterFactory(new MaskFormatter("###.###.###-##"))); } catch (ParseException ex) { System.err.println(ex.getMessage()); }

ERROS

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at java.util.regex.Matcher.getTextLength(Matcher.java:1140) at java.util.regex.Matcher.reset(Matcher.java:291) at java.util.regex.Matcher.<init>(Matcher.java:211) at java.util.regex.Pattern.matcher(Pattern.java:888) at br.com.supercred.view.FormPMMG.removeNaoNumericos(FormPMMG.java:153) at br.com.supercred.view.FormPMMG.validacaoCPF(FormPMMG.java:174) at br.com.supercred.view.FormPMMG.botaoSalvarActionPerformed(FormPMMG.java:1040) at br.com.supercred.view.FormPMMG.access$1700(FormPMMG.java:51) at br.com.supercred.view.FormPMMG$7.actionPerformed(FormPMMG.java:907) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.Component.processMouseEvent(Component.java:6263) at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) at java.awt.Component.processEvent(Component.java:6028) at java.awt.Container.processEvent(Container.java:2041) at java.awt.Component.dispatchEventImpl(Component.java:4630) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168) at java.awt.Container.dispatchEventImpl(Container.java:2085) at java.awt.Window.dispatchEventImpl(Window.java:2478) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at java.util.regex.Matcher.getTextLength(Matcher.java:1140) at java.util.regex.Matcher.reset(Matcher.java:291) at java.util.regex.Matcher.<init>(Matcher.java:211) at java.util.regex.Pattern.matcher(Pattern.java:888) at br.com.supercred.view.FormPMMG.removeNaoNumericos(FormPMMG.java:153) at br.com.supercred.view.FormPMMG.validacaoCPF(FormPMMG.java:174) at br.com.supercred.view.FormPMMG.botaoSalvarActionPerformed(FormPMMG.java:1040) at br.com.supercred.view.FormPMMG.access$1700(FormPMMG.java:51) at br.com.supercred.view.FormPMMG$7.actionPerformed(FormPMMG.java:907) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.Component.processMouseEvent(Component.java:6263) at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) at java.awt.Component.processEvent(Component.java:6028) at java.awt.Container.processEvent(Container.java:2041) at java.awt.Component.dispatchEventImpl(Component.java:4630) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168) at java.awt.Container.dispatchEventImpl(Container.java:2085) at java.awt.Window.dispatchEventImpl(Window.java:2478) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at java.util.regex.Matcher.getTextLength(Matcher.java:1140) at java.util.regex.Matcher.reset(Matcher.java:291) at java.util.regex.Matcher.<init>(Matcher.java:211) at java.util.regex.Pattern.matcher(Pattern.java:888) at br.com.supercred.view.FormPMMG.removeNaoNumericos(FormPMMG.java:153) at br.com.supercred.view.FormPMMG.validacaoCPF(FormPMMG.java:174) at br.com.supercred.view.FormPMMG.botaoSalvarActionPerformed(FormPMMG.java:1040) at br.com.supercred.view.FormPMMG.access$1700(FormPMMG.java:51) at br.com.supercred.view.FormPMMG$7.actionPerformed(FormPMMG.java:907) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.Component.processMouseEvent(Component.java:6263) at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) at java.awt.Component.processEvent(Component.java:6028) at java.awt.Container.processEvent(Container.java:2041) at java.awt.Component.dispatchEventImpl(Component.java:4630) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168) at java.awt.Container.dispatchEventImpl(Container.java:2085) at java.awt.Window.dispatchEventImpl(Window.java:2478) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at java.util.regex.Matcher.getTextLength(Matcher.java:1140) at java.util.regex.Matcher.reset(Matcher.java:291) at java.util.regex.Matcher.<init>(Matcher.java:211) at java.util.regex.Pattern.matcher(Pattern.java:888) at br.com.supercred.view.FormPMMG.removeNaoNumericos(FormPMMG.java:153) at br.com.supercred.view.FormPMMG.validacaoCPF(FormPMMG.java:174) at br.com.supercred.view.FormPMMG.botaoSalvarActionPerformed(FormPMMG.java:1040) at br.com.supercred.view.FormPMMG.access$1700(FormPMMG.java:51) at br.com.supercred.view.FormPMMG$7.actionPerformed(FormPMMG.java:907) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.Component.processMouseEvent(Component.java:6263) at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) at java.awt.Component.processEvent(Component.java:6028) at java.awt.Container.processEvent(Container.java:2041) at java.awt.Component.dispatchEventImpl(Component.java:4630) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168) at java.awt.Container.dispatchEventImpl(Container.java:2085) at java.awt.Window.dispatchEventImpl(Window.java:2478) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

A

Boa noite thiago, seguinte.: o campo que vc perguntou “ValorCPF” é o campo da minha aplicação que contem o CPF,meu TextField, ou simplesmente igual nosso amigo falou acima
é um parametro, então vc deve passar o valor da sua variável para o método, aquele ali foi a minha varíavel d minha aplicação.
Para formatar o campo CPF utiliza este seguinte código.

private void mascaraCPF() throw ParseException
     {
       MaskFormatter mascara = new MaskFormatter("###.###.###-##");
       mascara.intall(seuCampoCPF);
     }
Criado 14 de outubro de 2010
Ultima resposta 14 de out. de 2010
Respostas 6
Participantes 4