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);
}
}
19 Comentarios | deja el tuyo





dasd
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
me va a servir de mucho en la realizacion de mi proyecto. Gracias
me va a servir vastante gracias
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
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
hola estoy empezando con java y netbeans, agradeceria algun manual de referencia x q necesito hacer una conexion con mySql q necesito para eso…..
entra a mi blog ahi encontraras como hacer eso
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
Que tal Carlos Cesar …
para aceptar solo numeros es así:
JTextField.addKeyListener (new KeyAdapter() {
@Override
public void keyTyped (KeyEvent ke) {
char c = ke.getKeyChar ();
if (!((Character.isDigit (c) || (c == KeyEvent.VK_BACK_SPACE)))) {
ke.consume ();
}}}
);
saludos.
yAzOiv xulaxwoueobv
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…
no sea pendejo morro.
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
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!!!
megustamucho
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..