Como chamar componente/Validação?

16 respostas
L

Pessoal não to conseguindo fazer em que meu campo do Cpf faça a validação ...

segue o codigo:

package util.Cpf;


public class ValidaCPF {   
  
        
   public ValidaCPF() {   
    }   
      
public static boolean validaCpf(String xCPF)   
{   
try  
{   
  
//Testa se o CPF é válido ou não   
	
int d1,d4,xx,nCount,resto,digito1,digito2;   
String Check;   
String Separadores = "/-.";   
d1 = 0; d4 = 0; xx = 1;   
for (nCount = 0; nCount < xCPF.length() -2; nCount++)   
{   
String s_aux = xCPF.substring(nCount, nCount+1);   
  
//System.out.println(s_aux);   
  
if (Separadores.indexOf(s_aux) == -1) {   
d1 = d1 + ( 11 - xx ) * Integer.valueOf (s_aux).intValue();   
d4 = d4 + ( 12 - xx ) * Integer.valueOf (s_aux).intValue();   
xx++;   
};   
};   
resto = (d1 % 11);   
if (resto < 2)   
{   
digito1 = 0;   
}   
else  
{   
digito1 = 11 - resto;   
}   
  
d4 = d4 + 2 * digito1;   
resto = (d4 % 11);   
if (resto < 2)   
{   
digito2 = 0;   
}   
else  
{   
digito2 = 11 - resto;   
}   
  
Check = String.valueOf(digito1) + String.valueOf(digito2);   
  
String s_aux2 = xCPF.substring (xCPF.length()-2, xCPF.length());  

//System.out.println(s_aux2);   
//System.out.println(Check);   
  
if (s_aux2.compareTo (Check) != 0)   
{   
return false;   
}   
return true;   
}   
catch (Exception e)   
{   
return false;   
}   
}   
      
}

// classe Frm a tela
// aqui podemos ver que esta só com a mascara mas queria deixar ele com validação caso for verdadeiro ,ou se for falso mostre mensagem!

lblCpf.setText("CPF");

		try{
			((JFormattedTextField) txtCpf).setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.MaskFormatter("###.###.###-##")));
		} catch (java.text.ParseException ex) {
			ex.printStackTrace();
		}

// onde iria validar

private void btnConsistirActionPerformed(java.awt.event.ActionEvent evt) {

		
		if(!Cpf.val()){

			System.out.println("Invalido");
		}

16 Respostas

Eric_Yuzo
No botão que valida o CPF, teria que chamar o seu método de validação e passar o CPF que foi digitado no textField:
String xCpf = txtCpf.getText();

if(!ValidaCPF.validaCpf(xCpf)){ //Chame o método da classe que valida o CPF.
	System.out.println("Invalido");
}
L

onde eu vo passar seria no propria classe do txt , qq for clikado no botão consistir ele confere se esta correto ou não?

Eric_Yuzo

No código postado a validação está sendo feita no botão. Se quiser que a validação seja feita antes, pode colocá-la em um evento do textField. Isso tudo na classe onde está o textField.

A classe que valida o CPF serve para receber a string e dizer se é um CPF válido ou não. Como é um método estático, você chama ele diretamente de seu frame.

L

opa intaum fiz como vc fez mas não valido !!!!

assim se estiver vazio Ok ele mostra a mensagem mas qq esta tipo tudu zero ele msm assim aceita , e tbm qq eu apago e vou pra outra txt o campo volta a ficar com o s numeros digitos no campo cpf!
pq isso?

private void btnConsistirActionPerformed(java.awt.event.ActionEvent evt) {   


		String xCpf = txtCpf.getText();   

		if(!ValidaCPF.validaCpf(xCpf)){ 
			
			new  Mensagem(this,"Aviso", "CPF errado !!! ", Mensagem.MSG_BOTAO_OK, Mensagem.MSG_ICONE_INFORMACAO);

			   
		}  
	}
Eric_Yuzo

Pelo algoritmo de validação do CPF, se todos os dígitos forem iguais, o código é válido.

Ex: [telefone removido], [telefone removido], [telefone removido]… e assim por diante, são válidos. Teria que colocar uma condição para verificar se todos os dígitos são iguais e invalidá-lo.

L

Eric Yuzo

Valeu brother agora deu certo!!!

L

continuando o topico
pra não abrir outro…

Alguem teria um codifo que validasse os campos caso a pessoa que vai fazer o cadasro e esquecesse de preencher e o campo ficasse em vermelho?

valeu!!

Eric_Yuzo

Pra deixar o textField vermelho tem que setar o background:

txtField.setBackground(Color.red);
L

mas então eu só tenho validação pro cpf ,não pra validar se o campo esta vazio…e mostra a cor…pq se eu colocar dessa forma no meu form vai estar vermelho se eu ter clikado no botão consistir!

eu sei que tem codigo prontu e acabei perdendo um e não encontro mais…

Eric_Yuzo

Faz um if pra verificar se o campo está vazio no método que faz a validação.

if (textField.getText().isEmpty()) { //isEmpty retorna true caso a string esteja vazia. textField.setBackground(Color.red); }

L

vo colocar dentro da minha classe validacao Cpf … a 1 la em cima certo.

mas se eu quisesse só pintar o borda?

Eric_Yuzo

Não aconselho colocar na classe de validação do CPF. É melhor colocar no tratamento do evento de seu botão. Falo isso porque a responsabilidade do método de validação do CPF é apenas dizer se é válido ou não.

Não sei como alterar a cor da borda. Uma alternativa é setar uma nova borda com a cor desejada.

textField.setBorder(new LineBorder(Color.red));
L

sera que isso ajuda a fazer seria como uma validão tbm certo?

se for como posso chamr dentro do botão consistir!!!

import java.awt.Component;
import java.awt.Graphics;
import javax.swing.border.AbstractBorder;

/**
 * Constroi uma borda para uso em links.
 * @author Eder Peixoto
 * @version 1.01 - 20/04/2009.
 */
public class LinkBorder extends AbstractBorder{
    /**
     * Pinta uma borda apenas por baixo do componente, na mesma <code>Color</code> do foreground
     *do <code>component</code>.
     * @param c the component for which this border is being painted
     * @param g the paint graphics
     * @param x the x position of the painted border
     * @param y the y position of the painted border
     * @param width the width of the painted border
     * @param height the height of the painted border
     */
    @Override
    public void paintBorder(Component c, Graphics g, int x, int y, int width, int height){
        g.setColor( c.getForeground() );
        g.drawLine(0, height - 1, width, height - 1);       //Border Bottom
    }//Fim do metodo.
}//Fim da classe.
Eric_Yuzo

Pelo que entendi, a cor da borda desse LinkBorder vai variar de acordo com a variação da cor da fonte. Então teria que alterar a cor da fonte quando o campo estiver vazio.

if (textField.getText().isEmpty()) { textField.setForeground(Color.red); //Seta a cor da fonte. }
Outra coisa é que o código postado só desenha uma linha na parte inferior da borda. Para contornar a borda toda teria que desenhar um retângulo.

@Override public void paintBorder(Component c, Graphics g, int x, int y, int width, int height){ g.setColor( c.getForeground() ); //g.drawLine(0, height - 1, width, height - 1); //Border Bottom g.drawRect(x, y, width-1, height-1); // Desenha um retângulo na borda. }

THIAGOANALISTA

Tem como vc passar o seu código fonte, pra mim ver como vc fez para validar o cpf? to tentando aqui com esse código mas não está dando certo, li aqui tbem sobre validar campos vazios, vc consegui fazer? se puder me ajudar.

L

THIAGOANALISTA

respondi via mp!
ok!

Criado 16 de setembro de 2010
Ultima resposta 30 de set. de 2010
Respostas 16
Participantes 3