sábado, 14 de febrero de 2015

Validación de JTextField en Java

Aquí está mi segunda entrada...

Resulta que soy ingeniero en sistemas y me encanta la programación. Recientemente tuve la necesidad de validar unos campos de texto en Java (JTextField) y muy a pesar de que es común que lleve tareas de ese tipo a cabo, casi siempre termino por confundir las funciones o se me olvidan.

El fin de este post es compartir un poco de lo que he ido aprendiendo, estoy seguro de que a más de uno le será de utilidad.

Pues bien, para este tutorial utilizaré NetBeans como IDE y para comenzar mostraré cómo quedó el formulario:

Los campos se nombraron de la siguiente manera respectivamente:

- txtTexto
- txtNumeros
- txtSinEspacios
- txt5Caracteres

y como sus nombres indican el primero de ellos sólo aceptará letras, el segundo sólo números, el tercero no aceptará espacios,  y el último estará limitado a un máximo de 5 caracteres.

Para este caso se debe utilizar el listener KeyTyped. Cuando se pulsa una tacla ésta es mandada al sistema operativo, luego mediante este escuchador se accede a tal código para poder procesarlo en nuestro programa, esto a diferencia de KeyPressed y KeyReleased que sirven únicamente para escuchar cuando una tecla se pulsa o se suelta. (Al menos así lo entiendo, si no es así favor de corregirme :P ).

Una vez aclarado esto, hay que asignarle a cada campo su escuchador, para ello hay que seguir los pasos siguientes:



Clic derecho en el campo>Eventos>Key>KeyTyped

Eso nos llevará al método de escucha donde se colocaran las instrucciones siguientes:

Para txtTexto:
if(!Character.isLetter(evt.getKeyChar()))
            evt.consume();

Para txtNumeros:
if(!Character.isDigit(evt.getKeyChar()))
            evt.consume();

Para txtSinEspacios:
if(Character.isWhitespace(evt.getKeyChar()))
            evt.consume();

Para txt5Caracteres:
if(txt5Caracteres.getText().length() > 4)
            evt.consume();


De esto cabe destacar que se utiliza la clase Character para acceder a sus métodos como isDigit(), isWhiteSpace() o isLetter() mismos que evaluan un char y devuelven un valor boleano en función de si se trata de una letra, número o espacio (existen más métodos). Otra cosa en común que seguro se hace notar es el método consume(), que se encarga de consumir el evento generado para así evitar que se procese de manera 'normal' en el flujo del programa.

En realidad el código es muy simple y es evidente que se pueden hacer operaciones tan complejas y útiles como se requieran.

Si hay alguna duda podemos revisarla.

Finalmente dejo el enlace del código del proyecto.

Proyecto NetBeans [Mega]

Espero sea útil, saludos!

1 comentario:

  1. Casinos in Pennsylvania – What are they, and how to get
    The Gambling Control Board 거제 출장샵 of Pennsylvania has 토토사이트 given the Casino Control Board's permission to allow the casino to 남양주 출장샵 operate in the state. It 군산 출장안마 oversees 안산 출장마사지

    ResponderBorrar

Cualquiera puede comentar pero sé prudente con los demás.