Validar CPF em Java 2
segunda-feira, 4 de janeiro de 2010
/** * ValidaCPF.java * * Criado em 4 de janeiro de 2010, 16:00 */ package utils; import javax.swing.InputVerifier; import javax.swing.JComponent; import javax.swing.JTextField; /** * A classe ValidaCPF é usada para a validação de CPF em campos de * textos em uma interface gráfica. Esta classe deve ser usada * como o verificador de entrada de dados em componentes como um * JTextField. * * @author Luis Fernando de Souza Santos * */ public class ValidaCPF extends InputVerifier { /** (non-Javadoc) * @see javax.swing.InputVerifier#verify(javax.swing.JComponent) */ @Override public boolean verify(JComponent component) { return verificaCampo(component); } /** * O método verificaCampo faz a efetiva verificação do CPF. * * @param component o componente do tipo JTextField. * @return true se o CPF é válido, false caso contrário. */ protected boolean verificaCampo(JComponent component) { boolean eValido = false; // Assume que o CPF é inválido String cpf = null; if (component instanceof JTextField) { JTextField tmp = (JTextField) component; cpf = tmp.getText(); } else { return eValido; } // Os caracteres do CPF char[] caracteres = cpf.toCharArray(); // Transformados em dígitos int[] digitos = new int[caracteres.length]; // Variáveis temporárias int somaNove = 0, somaDez = 0; // Os dígitos de verificação do CPF int digitoDez = 0, digitoOnze = 0; if (caracteres.length != 11) { return eValido; // O CPF deve ter exatamente 11 dígitos. } for (int count = 0; count < caracteres.length; count++) { if (!Character.isDigit(caracteres[count])) { return eValido; // Se não for um dígito não é um CPF válido. } } // Transforma os caracteres em dígitos numéricos for (int count = 0; count < caracteres.length; count++) { digitos[count] = Character.getNumericValue(caracteres[count]); int valor = 0; // Soma os nove primeiros dígitos multiplicados // por um valor determinado. if (count < 9) { valor = digitos[count] * (11 - (count + 1)); somaNove += valor; } } // Usa a soma para calcular o primeiro dígito verificador. digitoDez = 11 - (somaNove % 11); if (digitoDez > 9) { digitoDez = 0; } // Se o décimo dígito calculado for diferente do décimo dígito passado // o CPF não é válido. if (digitoDez != digitos[9]) { return eValido; } // Soma os 10 primeiros dígitos multiplicados por um valor // determinado. for (int count = 0; count < digitos.length; count++) { int valor = 0; if (count < 10) { valor = digitos[count] * (12 - (count + 1)); somaDez += valor; } } // Usa a soma para calcular o segundo dígito verificador. digitoOnze = 11 - (somaDez % 11); if (digitoOnze > 9) { digitoOnze = 0; } // Se o décimo primeiro dígito for diferente do dígito passado, // o CPF não é válido. if (digitoOnze != digitos[10]) { return eValido; } // Se passou por todos os testes o CPF é válido eValido = true; return eValido; } }
desculpe a ignorância, mas como faço para o meu textField chamar essa classe?
txtField.setInputVerifier(new ValidaCPF());