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.
Resulta muy útil en varias ocaciones.
junio 25, 2009 a las 4:03 pm
la imagen es muy pequeña y no se logra apreciar el codigo xD
junio 26, 2009 a las 2:15 pm
Gracias x la observacion @baupao, se me ha pasado x alto. Ya està corregido, puedes ampliar la imagen haciendo clic en ella. 😉
Saludos,
febrero 23, 2010 a las 9:40 pm
Hola, puedes enviarme el codigo del progrma en Netbeans?
Te lo agradeceria mucho
febrero 24, 2010 a las 12:11 am
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,
May 17, 2010 a las 9:04 am
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
abril 30, 2011 a las 5:33 pm
Gracias me resultó muy útil tu código!!
Saludos
julio 25, 2011 a las 8:58 pm
Muchas gracias!!
sirve al menos para validar un número telefónico que es para lo que lo necesito.
octubre 2, 2011 a las 5:57 pm
Hola q tal
eto..como hago q aparezca la opcion
FormatterFactory?
octubre 11, 2011 a las 12:34 pm
Pues si yo tmabien lo ncesito para validar una ddireccio e-mail
junio 25, 2012 a las 2:50 pm
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.»
septiembre 5, 2012 a las 5:18 pm
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 😀
septiembre 6, 2012 a las 11:42 am
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?
marzo 12, 2013 a las 3:02 am
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
marzo 21, 2015 a las 1:17 pm
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.
marzo 24, 2015 a las 3:45 am
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
junio 25, 2015 a las 7:43 pm
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