Validacion jTextField java
Hola a todos,
estoy desarrollando una aplicaci贸n de escritorio y tengo la necesidad de validar ciertos datos introducidos en campos de texto jtextfield. En caso de que el dato introducido no se valide, jamas se debe perder el foco del jtextfield y jamas se debe poder realizar ninguna acci贸n (ej. abrir otra pantalla, acceder a un menu, pinchar un boton...) hasta que se introduzca un valor adecuado.
En una primera aproximaci贸n mi intenci贸n era validar el dato tras la perdida de foco del jtextfield y en caso de no validarse devolver el foco al jtexfield para que lo vuelva a perder tras otra accion y se vuelva a validar. La cosa parece l贸gica pero por ejemplo si con un dato erroneo pincho en una de las pesta帽as que posee el formulario de nada me sirve devolverle el foco al jtextfield ya que el cambio de pesta帽a se lleva a cabo y la validaci贸n se omite. Lo mismo me ocurre pincho para abrir otra ventana o cierro la aplicaci贸n...
Cualquier comentario para una posible soluci贸n ya es agradecido.
Saludos.
estoy desarrollando una aplicaci贸n de escritorio y tengo la necesidad de validar ciertos datos introducidos en campos de texto jtextfield. En caso de que el dato introducido no se valide, jamas se debe perder el foco del jtextfield y jamas se debe poder realizar ninguna acci贸n (ej. abrir otra pantalla, acceder a un menu, pinchar un boton...) hasta que se introduzca un valor adecuado.
En una primera aproximaci贸n mi intenci贸n era validar el dato tras la perdida de foco del jtextfield y en caso de no validarse devolver el foco al jtexfield para que lo vuelva a perder tras otra accion y se vuelva a validar. La cosa parece l贸gica pero por ejemplo si con un dato erroneo pincho en una de las pesta帽as que posee el formulario de nada me sirve devolverle el foco al jtextfield ya que el cambio de pesta帽a se lleva a cabo y la validaci贸n se omite. Lo mismo me ocurre pincho para abrir otra ventana o cierro la aplicaci贸n...
Cualquier comentario para una posible soluci贸n ya es agradecido.
Saludos.
Hola:
Si usas 煤nicamente componentes de swing (no de awt) puedes usar un InputVerifier.
Creas una clase que herede InputVerifier. Esta clase tiene un m茅todo que devuelve true si el componente puede perder el foco o no. En ese m茅todo compruebas el valor del JTextField y devuelves true o false seg煤n te interese. El JTextField tiene un metodo setInputVerifier para pasarle ese InputVerifier que te has hecho.
Se bueno.
Si usas 煤nicamente componentes de swing (no de awt) puedes usar un InputVerifier.
Creas una clase que herede InputVerifier. Esta clase tiene un m茅todo que devuelve true si el componente puede perder el foco o no. En ese m茅todo compruebas el valor del JTextField y devuelves true o false seg煤n te interese. El JTextField tiene un metodo setInputVerifier para pasarle ese InputVerifier que te has hecho.
Se bueno.
Hola de nuevo,
he intentado aplicar la soluci贸n que me propones y sigo teniendo las mismas carencias. Si con un valor incorrecto intento focalizar otro componente swing(otro JTextField o un JComboBox por ejemplo) dentro del panel el funcionamiento es correcto ya que el metodo verify devuelve falso y no le deja perder el foco al JTextField.
Ahora bien, como comentaba antes si pincho en otra pesta帽a que posee el formulario, el metodo verify sigue devolviendo false pero se ejecuta el cambio de pesta帽a cuando mi intencion es que eso no ocurra, ni tampoco que me deje hacer cualquier otra acci贸n (por ejemplo una acci贸n al pulsar un bot贸n) ni si quiera cerrar la aplicaci贸n.
No se si me explico bien, pero la idea principal es que en caso de que no se valide que el foco no se mueva del componete y no se pueda realizar ninguna accion sobre el aplicativo hasta que no quede validado el dato.
Saludos y gracias.
he intentado aplicar la soluci贸n que me propones y sigo teniendo las mismas carencias. Si con un valor incorrecto intento focalizar otro componente swing(otro JTextField o un JComboBox por ejemplo) dentro del panel el funcionamiento es correcto ya que el metodo verify devuelve falso y no le deja perder el foco al JTextField.
Ahora bien, como comentaba antes si pincho en otra pesta帽a que posee el formulario, el metodo verify sigue devolviendo false pero se ejecuta el cambio de pesta帽a cuando mi intencion es que eso no ocurra, ni tampoco que me deje hacer cualquier otra acci贸n (por ejemplo una acci贸n al pulsar un bot贸n) ni si quiera cerrar la aplicaci贸n.
No se si me explico bien, pero la idea principal es que en caso de que no se valide que el foco no se mueva del componete y no se pueda realizar ninguna accion sobre el aplicativo hasta que no quede validado el dato.
Saludos y gracias.
