JFormattedTextField y MaskFormatter

Si bien dentro de las aplicaciones bajo swing (java) podemos utilizar un componente como el JTextField para capturar una entra de texto. Pero que sucede si esta entrada debe seguir un formato específico? o posee un tamaño obligatorio al cual debe llegar? Claros ejemplos de esto son al querer capturar un número de telefóno o un número de cédula (DNI).

Para ello se puede utilizar un componente conocido como JFormattedTextField. Al que podemos indicar el formato de nuestra entrada. Lo que tenemos que hacer es crear una instancia de la Clase MaskFormatter en base a un patrón y este enviarlo en el constructor del JFormattedTextField.

MaskFormatter patron = new MaskFormatter(«#########-#»);

JFormattedTextField campoEntrada = new JFormattedTextField(patron);

y listo nuestra entrada será validada, en este caso solo para números.

Si utilizamos NetBeans, deberemos colocar una instancia de la clase AbstractFormatterFactory en la propiedad FormatterFactory del elemento gráfico.

Formato JFormattedTextfield

Resulta muy útil en varias ocaciones.

16 respuestas to “JFormattedTextField y MaskFormatter”

  1. baupao Says:

    la imagen es muy pequeña y no se logra apreciar el codigo xD

  2. qmarqeva Says:

    Gracias x la observacion @baupao, se me ha pasado x alto. Ya està corregido, puedes ampliar la imagen haciendo clic en ella. 😉

    Saludos,

  3. Andres Says:

    Hola, puedes enviarme el codigo del progrma en Netbeans?
    Te lo agradeceria mucho

  4. qmarqeva Says:

    Que tal @Andres, el código necesario para implementar esto lo puedes ver haciendo clic sobre la imagen, pero un proyecto en NetBeans no lo tengo a mano… haber si en estos días hago algo pequeño y lo subo…

    Saludos,

  5. Erikson Says:

    Hola, lo que necesito es introducir un email que significa esto, que no necesariamente todos tienen la misma cantidad de caracteres. Como puedo usar una mascara o algo que me brinde una solución parecida, agradezco la respuesta

  6. Christian Says:

    Gracias me resultó muy útil tu código!!
    Saludos

  7. Daniel Carrero Says:

    Muchas gracias!!
    sirve al menos para validar un número telefónico que es para lo que lo necesito.

  8. Miguel Pardo Says:

    Hola q tal
    eto..como hago q aparezca la opcion
    FormatterFactory?

  9. Jose Luis Uyuni Says:

    Pues si yo tmabien lo ncesito para validar una ddireccio e-mail

  10. Marvin Says:

    La cosa ahora es más fácil, en netbeans solo arrastramos el Formatted Field, y en las propiedades solo modificamos la opcion «formatterFactory» y listo y rápido configuramos la máscara sin nada de código extra.»

  11. jefraroce Says:

    Y si lo que yo quiero es q me valide texto, por ejemplo para ingresar un email, se puede usar un JFormattedTextField, con una mascara? ¿como?, Gracias por la posible ayuda 😀

  12. Armando Says:

    Tengo un problema con el JFormattedTextField resulta que se le puede poner una máscara pero también no puede llevar una máscara, es decir que es dinámico esta asignación. Mi problema viene en la parte de cuando no utilizo mascaras ocupo que este componente se comporte normal como un TextField que en realidad si lo hace solo que queda activado una función especifica del JFormattedTextField y es la siguiente:
    Cuando se presiona la Tecla ESC y manejamos mascara esta se valida y realiza una funciona que tengo asignada yo, pero cuando no manejo mascaras y presiono ESC no se que hace que no me ejecuta la acción que le tengo asignada hasta una 2da ocasión que presiono el ESC, es decir, ocupo presionar 2 veces la tecla ESC para que me ejecute la acción que le tengo asignada.
    Como puedo omitir esta funcionalidad que tiene este componente, si no utilizo mascaras que no me valide los datos?

  13. Helbert Edson Says:

    busca la propiedad formatterFactory .. click en los puntos ahi hay varios ejemplos de formatear es parecido al excel y ya .
    Para validar un correo puedes usar expresiones regulares RegEx busca info al respecto eso te ayudara

  14. Karen Says:

    Quiero controlar los caracteres que se ingresen me dicen que es con

    setValidCharacters

    pero no se como hacerlo

    me dicen que lo haga asi:

    MaskFormatter mascara = new MaskFormatter(«############»);
    mascara.setPlaceholderCharacter(‘_’);
    mascara.setValidCharacters(«01»);

    intento pero me da error.

    Ayuda.

  15. christian gastelum angeles Says:

    como le arias para que tenga k acompletar todos los caracteres por ejemplo k tenga k escribir todo el numero telefonico k no lo deje incompleto

  16. Pablo Says:

    Hola me puedes ayudar, como puedo validar su fecha osea que pongan 58 en el mes y no existe ese mes y asi en lo de dia, mes y año 😀 Por favor ayuda gracias


Replica a Armando Cancelar la respuesta