Necesito validar los datos entrados en un TextField, y decir si son numeros o caracteres o una combinacion de ambos.
Como lo puedo hacer?
| ||||
Respuesta: Validar datos en java tambien puedes poner esto en el evento keyTyped del JTextfields controlar que solo se puedan ingresar numeros:
Código:
controlar que solo se puedan ingresar letras:private void txtCiEmpleadoKeyTyped(java.awt.event.KeyEvent evt) { int k = (int) evt.getKeyChar(); if (k >= 97 && k <= 122 || k >= 65 && k <= 90) { evt.setKeyChar((char) KeyEvent.VK_CLEAR); JOptionPane.showMessageDialog(null, "No puede ingresar letras!!!", "Ventana Error Datos", JOptionPane.ERROR_MESSAGE); } if (k == 241 || k == 209) { evt.setKeyChar((char) KeyEvent.VK_CLEAR); JOptionPane.showMessageDialog(null, "No puede ingresar letras!!!", "Ventana Error Datos", JOptionPane.ERROR_MESSAGE); } if (k == 10) { //transfiere el foco si presionas enter txtCiEmpleado.transferFocus(); } }
Código:
saludos y cuidate private void txtNombreEmpleadoKeyTyped(java.awt.event.KeyEvent evt) { int k = (int) evt.getKeyChar(); if (k > 47 && k < 58) { evt.setKeyChar((char) KeyEvent.VK_CLEAR); JOptionPane.showMessageDialog(null, "No puede ingresar numeros!!!", "Ventana Error Datos", JOptionPane.ERROR_MESSAGE); } if (k == 10) { txtNombreEmpleado.transferFocus(); } } |
| |||
Respuesta: Validar datos en java Bien solo escribo esto para decirles que el codigo de kriptop es correcto y funcion a PERO solo una vez . es decir si mandas un valor `por parametro mas de una ves ya no anda- la solucion esta aca -
Código:
boolean algunDigito = false; boolean algunaLetra = false; 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"); algunDigito=false; algunaLetra=false; }else if (algunDigito && algunaLetra){ System.out.println("Aca tenemos numeros y letras"); algunDigito=false; algunaLetra=false; }else if(algunaLetra ){ System.out.println("Solamente letras"); algunDigito=false; algunaLetra=false; } } Se los esplico primero ven que despues de que enpieza un ciclo if . para determinar que clas de cadena es. AL finalizar la misma reinicio el valor de las variables booleana.s
Código:
con esto se corrige el error al llamarlo varias veces. boolean algunDigito = false; boolean algunaLetra = false; GRacias ermano por t codigo ahora lo pulli y perfecto. :) |
| |||
Respuesta: Validar datos en java djagu_26 Tu respuesta esta muy buena pero sabes si puedo crear un metodo. para que me controle lo que tipeo es decir para no escribirlo tantas veces. pues ya sabes eso lo tengo que escribir de acuerdo a ala cantidad de campos que quiero validar ejm en un form tengo 4 campos y tengo que escribir eso 4 veces-. se podria capturar lo que se escribe en un metodo? solamente llamo a ese metodo en el evnto KeyTyped pues como te fijas - en mi respuesta anterior alli creee un metodo. que em contola el tipo de cadena. este metodo lo llamo en el lostfocus. , tambien le paso los parametro antes de llamarlo y funciona perfecto. pero no puedo haver un metodo que controle mientras escribo como el tuyo? |
| |||
Respuesta: Validar datos en java hola vmkurz, tu codigo esta bn solo que creo que quedaria un poco mejor si los estructuras de la sgte manera... public void comprobarTipoDeCadena(String cadena){ { boolean algunDigito = false; boolean algunaLetra = false; 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"); }else if (algunDigito && algunaLetra){ System.out.println("Aca tenemos numeros y letras"); }else if(algunaLetra ){ System.out.println("Solamente letras"); } } |
| |||
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:
Esta es mi clase validar. ahora lo implemento asi desde mi jframe. 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; } Construi este emtodo que envia los aprametros a la clase validar. que controla el tipo de cadena.
Código:
Ahora desde el proceso keyreleased. llamo a este emtodo y le digo que cadena va a controlar o pasar como parametro.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); } }
Código:
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 . :) private void jTextFieldCodigoKeyReleased(java.awt.event.KeyEvent evt) { cadena =this.jTextFieldCodigo.getText(); Verificar(); } |
| |||
Respuesta: Validar datos en java si te das cuenta, cada vez que llamas al metodo las variables se inicializan en false. de tal manera que siempre sera una validacion difrente cada vez que utilices el metodo por lo menos esa es mi percepion. |
| |||
Respuesta: Validar datos en java Si se supone que asi tendria que ser pero no ocuurre . Como te explique eso es lo que ocurre quizas sea por que cada vez se llama a ese metodo pero las variables estan fuera del metodo no dentro. son de tipo public para acceder desde otros metodos en la clase , de echo yo utilizo esas variablñes en 3 metodos. tambien tengo un constructor que me crea Dialogos dentro de la clase. estos los llamo al perder el enfoque de un campo es decir , valido mientras se escribe y al perder el enfoqe un objeto. es una doble validadcion. Mientras se escribe solo avisa o ayuda al ususario el otro no le permite equivocarse.. . Si declarop las variables dentro del metodo. como locales. eso si funcionaria. pero no lo hice hehe ya sabes porque. e aqui mi otro metodo este lo llamo en el lostfocus.
Código:
Es por esto que pue lo reiniciio :) public void ComprovarTipoDeCadenaLostfocus(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; String Objetus="MInconpatibleC"; //ESTABLESCO EL valor para construr un dialogo CMD.Dialogo(valor,Objetus); //lamo al dialogo. Este responde con una variable que capturo desde el jframe. }else if (algunDigito && algunaLetra){ System.out.println("Aca tenemos numeros y letras"); algunDigito=false; algunaLetra=false; String Objetus="MInconpatibleC+N"; CMD.Dialogo(valor,Objetus); }else if(algunaLetra ){ System.out.println("Solamente letras"); algunDigito=false; algunaLetra=false; String Objetus="MInconpatibleN"; CMD.Dialogo(valor,Objetus); } } |