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).
Como validar o CPF com mascara em tempo de execução
6 Respostas
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();
}
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);
}
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:
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
Uma dúvida aqui, o que seria if(!this.validacaoCPF(valorCPF)) //valorCPF
devo criar um campo valorCPF?
Uma dúvida aqui, o que seriaif(!this.validacaoCPF(valorCPF)) //valorCPFdevo 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 =]
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)
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);
}