gentoo linux, java, software libre y otras hierbas
ago, 04 2008 - 1:50 pm

Validación de formularios en Java

CódiLa validación de formularios nos permite asegurarnos que los datos que, por ejemplo, un usuario ingrese en un campo de texto sean válidos. Dicha validación puede hacerse una vez que el usuario haya digitado todos los datos, o mientras el usuario los esté digitando.

Para el primer caso, lo mejor es utilizar expresiones regulares usando el método matches() de la clase String (si necesitas un ejemplo, clic aquí).

Para el segundo caso tendremos que manejar los eventos del teclado que se generen sobre determinado control, usando la interfaz KeyAdapter y el método keyReleased. Así, en nuestro código de ejemplo tenemos un JTextField al que le añadimos un Listener que escuchará los eventos del teclado, y verificará si la tecla presionada es un caractér válido (solo letras), de lo contrario lo elimina.

No hay nada especial en el código de ejemplo salvo por un par de líneas:

  • Línea 17: se utiliza el método anidado getToolkit().beep(), que hará que el sistema alerte al usuario con un pitido cada vez que un dato erróneo.
  • Línea 25: comparamos el char que digite el usuario con el entero 8, que es el código resultado al usar el Backspace (tecla para borrar hacia la izquierda); lo cual permite al usuario borrar caracteres.

Código…

import java.awt.Robot;
import javax.swing.*;
import java.awt.event.*;
public class SoloLetras extends JFrame {
	private JTextField caja = new JTextField();
	public SoloLetras() {
		super("Solo dejo escribir letras");
		caja.addKeyListener(new KeyAdapter() {
			public void keyReleased(KeyEvent e) {
				Character caracter = new Character(e.getKeyChar());
				if (!esValido(caracter)) {
					String texto = "";
					for (int i = 0; i < caja.getText().length(); i++)
						if (esValido(new Character(caja.getText().charAt(i))))
							texto += caja.getText().charAt(i);
					caja.setText(texto);
					getToolkit().beep();
				}
			}
			public boolean esValido(Character caracter)
			{
				char c = caracter.charValue();
				if ( !(Character.isLetter(c) //si es letra
						|| c == ' ' //o un espacio
						|| c == 8 //o backspace
					))
					return false;
				else
					return true;
			}
		});
		getContentPane().add(caja);
		setSize(300, 60);
		setVisible(true);
	}
	public static void main(String args[]) {
		JFrame.setDefaultLookAndFeelDecorated(true);
		SoloLetras ventana = new SoloLetras();
		ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
}

Descargar código fuente

19 Comentarios | deja el tuyo

2 enlaces entrantes

17 Comentarios en “Validación de formularios en Java”

  1. MARINA dice:

    enas, no soy muy experimentada en el tema y me estoy volviendo loca para poner al final de la plantilla un recuadro de comentario (como el que usan ustedes) con el mail obligatorio, logre un formulario de consulta, pero no queda publicado lo que escriben los visitantes. Si alguien me puede ayudar me va a hacer un gran favor!!!

    PD: uso blogger

  2. alan dice:

    me va a servir de mucho en la realizacion de mi proyecto. Gracias

  3. RINCON dice:

    me va a servir vastante gracias

  4. DIEGO ARMANDO dice:

    BUENAS NOCHES PRIMERAMENTE AGRADESCO ALOS BLOG QUE SIEMPRE PARAN COMPARTIENDO IDEAS Y SOLUCIONES QUE DERREPENTE MUCHOS NO HALLAN COMO POR EJEMPLO YO SOY UN ESTUDIANDO DE IDAT DE 5TO CICLO Y ESTOY EMPEZANDO A LLEVAR JAVA AVANZADO Y BUENO ME PARECE INTERESANTE PERO ES ALGO COMPLEJO ESPERO QUE EN EL TRANSCURSO DE LAS CLASES VAYA APRENDIENDO . Y CON EZFUERZO SE QUE LO VOY A LOGRAR SALUDOS A TODOS LOS Q TRATAN DE SALIR ADELANTE GRACIAZ ATENTAMENTE DIEGO MAS CONOCIDO COMO EL LOBITO =) …HASTA PRONTO

  5. Juan Carlos dice:

    buenas necesito ayuda empiezo a dar mis primeros pasos en java y netbenas y necesito saber como validar formularios web con un control que se llama page alert o el control alert por el momento la validacion lo he conseguido con el control message gracias por tu uyuda

  6. nando dice:

    hola estoy empezando con java y netbeans, agradeceria algun manual de referencia x q necesito hacer una conexion con mySql q necesito para eso…..

  7. Carlos Cesar dice:

    Hola que tal muy buen post de validacion pero tengo una duda y para aceptar solo numeros como le hago? precisamente estaba buscando algo asi pero con numeros…espero y me ayudes gracias

  8. Carlos Cesar dice:

    hola que tal gracias por el codigo tarde pero seguro jejeje…fijate que los estoy usando en una aplicacion web podria acomodar esta validacion a una pagina web… como seria? gracias de nuevo…

  9. Dos7 dice:

    Hola a todos necesitooooo su ayuda me urge estoy hciendo un proyecto de ventas compras pero tengo un error, cuando doy de alta una nueva venta necesito que al seleccionr el id del cliente tambien me aparesca automaticamente su nombre eso del nombre en un jtexyfield si alguien me puede ayudarde antemano se lo agradecere muchiiiisisisisisisisimo

  10. matt dice:

    oye man esa clase luego como la jalo para usarla en mis jtextfield, soy nuevo, aprendiendo al chilazo!!!… tengo idea de llamarlo dentro de mi main.java, pero en que evento de mi textfield, o al declarar en la clase cada uno de mis textfield lo hace automatic, responde man… opio33@hotmail.com ó opiodcronos@gmail
    gracias broth!!!

  11. adrian bravo dice:

    megustamucho

  12. Virginia dice:

    Bueno lo que necesito es validar campos de texto en java de una interfaz ya echa.
    En la primera caja de texto es que inserte nombre del alumno, en la segunda caja es inserta la primera letra de la carrera en este caso sistemas que sera la (S) y a un lado que ponga su numero de control pero ya con los primeros numeros que son(101) pero que solo deje introducir la primera letra y los demas numeros. Espero y si me puedan ayudar..

¡Déjanos tu comentario!