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




