Ver Mensaje Individual
  #9 (permalink)  
Antiguo 22/06/2010, 08:16
vmkurz
 
Fecha de Ingreso: abril-2009
Mensajes: 31
Antigüedad: 15 años
Puntos: 0
Sonrisa Respuesta: Validar datos en java

Bien Gracias Man. pero si no reinicias el valor de las variables booleanas. toma por defecto el anterior.valor esto es un problema si usas el metodo varias veces. ejem.

al utilizar o llamar este proceso desde un formulario o otro clase produce error. cual es.

SI Tienes solo letras entonces pues. Algunaletra=true;
si tienes solodigitos AlgunDigito=true;
si tienes ambos numeros y letras ambos true,
Ok cual es el problema

al usar este metodo en el evento KeyRelease de un jframe. ocurre lo siguente.
Escribes numeros retorna solodigitos true, despues escribes letras retorna ambos true. PERO si borras las letras y escribes solo numeros y vuelves a llamar al metodo sin reiniciar las variables. retorna anbos true por ams de que la cadena ya no tiene letras. Es decirt se queda en el buffer de emoria. hehe. eso es todo solo por eso reiniciio mis variables booleanas. Bien aca les dejo la aplicacion de este codigo en un jframe. AH publico las variables booleanas de tipo public para ser accesible desde todos los metodos de la clase-

Código:
  public   boolean algunDigito = false;
  public    boolean algunaLetra = false;

Código:
public void ComprovarTipoDeCadena(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 no lostfocus");
           ReiniciarBooleanas();
            retornar=1;
        }else if (algunDigito && algunaLetra){
            System.out.println("Aca tenemos numeros y letras");
            retornar=2;
            ReiniciarBooleanas();
        }else if(algunaLetra ){
        System.out.println("Solamente letras");
        retornar=3;
        ReiniciarBooleanas();
        }
    }

      public void ReiniciarBooleanas(){
      algunDigito=false;
      algunaLetra=false;
    }
Esta es mi clase validar. ahora lo implemento asi desde mi jframe.
Construi este emtodo que envia los aprametros a la clase validar. que controla el tipo de cadena.


Código:
public void Verificar() {
            VAL.ComprovarTipoDeCadena(cadena);
               if(VAL.retornar==55){
               mensajeplano.setText("No se admiten Numeros");
               this.mensajeplano.setVisible(true);Agoo visisble un jlabel en panatalla
               }else{
               this.mensajeplano.setVisible(false);
              }
              VAL.ValidarNumero(cadena);//Estees otro metodo deqe llamo. tambien esta en la clase Validador pero esste controla la longitud de la cadena.
               if (VAL.retornar==77){
               mensajeplano2.setText("Este campo no puede tener mas de 40 Letras");
               this.mensajeplano2.setVisible(true);
               }else{
               this.mensajeplano2.setVisible(false);
               } 
}
Ahora desde el proceso keyreleased. llamo a este emtodo y le digo que cadena va a controlar o pasar como parametro.

Código:
private void jTextFieldCodigoKeyReleased(java.awt.event.KeyEvent evt) {
         cadena =this.jTextFieldCodigo.getText();
         Verificar();
    }
bien pues esta todo . ahora tengo un metodo que controla todo y pues lo llamo en el keyreleased de cualqueir jtexfield que deseo chekear . Bye bye . :)