Tengo una clase llamada validador.java esta tiene un metodo que valida el tipo de cadena y retorna un valor poc cada tipo de cadena es decir se. son caractere,numericos. si la cadena esta vacia o si es muy extensa etc.
Todo me funcioan bien. Realiza la tarea Muy bien.A esta clase la llamo desde Un JFrame del siguente modo.
Código:
Bien todo funciona bien Si lo ago de este MODO. VAL=new Validador();
public void Verificar() {
VAL.ComprovarCampo(cadena); ///Cadena es una variable publica de my JFRAME //ADQUEIRE EL VALOR de uN JTextField ejem cadena=JtextFieldDescripcion.getText();
}
private Validador VAL;
El Problema surge cuando quiero acceder a la respuesta que me da el metodo. es decir que valor me retorna. retorna 1 si es solo carateres 5 si la cadena esta vacia etc.
Lo normal para saber eso seria esto.
Código:
Bien ahora llamo a este metodo desde el LostFocus. de mi JtextField. y me respoponde 3 veces el metodo es decir se ejecuta 3 veces. alguein sabe por que?y Como Solucionarlo?public void Verificar() {
VAL.ComprovarCampo(cadena);
if(VAL.retornar==5){
JtextFieldDescripcion.requestFocus();
}
}
Por Ultimo Aca esta mi clase Validar
Código:
Bien reiniciar Boleanas es un metodo que reinicia mis variables boleanas. es de tipo public por que utilizo ese metodo en varios metodos de la clase.public void ComprovarCampo(String cadena){
{
for (int i = 0; i < cadena.length(); i++)
if (Character.isDigit(cadena.charAt(i))) {
algunDigito = true;
} else {
algunaLetra = true;
}
}
if(algunDigito && !algunaLetra){
System.out.println("TODO DIGITOS");
algunDigito=false;
algunaLetra=false;
retornar=1;
ReiniciarBooleanas();
return;
}else if (algunDigito && algunaLetra){
System.out.println("Aca tenemos numeros y letras");
algunDigito=false;
algunaLetra=false;
retornar=2;
ReiniciarBooleanas();
return;
}else if(algunaLetra ){
System.out.println("Solamente letras");
algunDigito=false;
algunaLetra=false;
ReiniciarBooleanas();
retornar=3;
return;
}else if (!algunDigito && !algunaLetra){
System.out.println("Cadena Vacia Metdo ComprovarTipoDeCadenaLostfocus ");
ReiniciarBooleanas();
retornar=4;
JOptionPane.showMessageDialog(null, "Campo Vacio " , "Atencion",
JOptionPane.INFORMATION_MESSAGE);
return;
}
if(cadena.length()>4){
retornar=5;
return;
}
}
El principal problema es que cuando pregunto por el resultado que me retorna el metodo. si no pregunto y no ago ninguna accion No ai problema. Pero si quiero saber el Valor retornado Para emitir un mensaje o asignarle el enfoque a algun objeto ya me tira ese problema de repetirse varias veces.Pero si llamo desde mi lost focus y solo compruebo el tipo de cadena etc No me da error solo si queiro hacer algo con la respuesta.Ayundeme Gracias :)


