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 :)