java.lang.Objectjavax.swing.JFormattedTextField.AbstractFormatterjavax.swing.text.DefaultFormatterjavax.swing.text.MaskFormatter

Todas las interfaces implementadas:
Serializable, Cloneable
public class MaskFormatter
extends DefaultFormatter

MaskFormatter se utiliza para formatear y editar cadenas. El comportamiento de un MaskFormatter se controla por medio de una máscara de cadena que especifica los caracteres válidos que pueden estar contenidos en una ubicación particular en el Document modelo. Se pueden especificar los siguientes caracteres:

Caracteres válidos y sus descripciones
Personaje Descripción
# Cualquier número válido, utiliza Character.isDigit.
Carácter de escape, utilizado para escapar de cualquiera de los caracteres de formato especial.
U Cualquier personaje (Character.isLetter). Todas las letras minúsculas se asignan a mayúsculas.
L Cualquier personaje (Character.isLetter). Todas las letras mayúsculas se asignan a minúsculas.
A Cualquier carácter o número (Character.isLetter o Character.isDigit).
? Cualquier personaje (Character.isLetter).
* Cualquier cosa.
H Cualquier carácter hexadecimal (0-9, af o AF).

Normalmente, los caracteres corresponden a un carácter, pero en ciertos idiomas este no es el caso. La máscara es por carácter y, por lo tanto, se ajustará para adaptarse a tantos caracteres como sea necesario.

Puede restringir aún más los caracteres que puede ingresar el setInvalidCharacters y setValidCharacters métodos. setInvalidCharacters le permite especificar qué caracteres no son legales. setValidCharacters le permite especificar qué caracteres son válidos. Por ejemplo, el siguiente bloque de código es equivalente a una máscara de ‘0xHHH’ sin caracteres inválidos / válidos:

 MaskFormatter formatter = new MaskFormatter("0x***");
 formatter.setValidCharacters("0123456789abcdefABCDEF");
 

Al formatear inicialmente un valor si la longitud de la cadena es menor que la longitud de la máscara, pueden suceder dos cosas. Se utilizará la cadena de marcador de posición o se utilizará el carácter de marcador de posición. Se da prioridad a la cadena de marcador de posición. Por ejemplo:

   MaskFormatter formatter = new MaskFormatter("###-####");
   formatter.setPlaceholderCharacter('_');
   formatter.getDisplayValue(tf, "123");
 

Daría como resultado la cadena ‘123 -____’. Si setPlaceholder("555-1212") fue invocado ‘123-1212’ resultaría. La cadena de marcador de posición solo se usa en el formato inicial, en formatos posteriores solo se usará el carácter de marcador de posición.

Si un MaskFormatter está configurado para permitir solo caracteres válidos (setAllowsInvalid(false)) los caracteres literales se omitirán según sea necesario durante la edición. Considere un MaskFormatter con la máscara “### – ####” y el valor actual “555-1212”. El uso de la tecla de flecha derecha para navegar por el campo dará como resultado (| indica la posición del signo de intercalación):

   |555-1212
   5|55-1212
   55|5-1212
   555-|1212
   555-1|212
 

El ‘-‘ es un carácter literal (no editable) y se omite.

Se producirá un comportamiento similar al editar. Considere insertar la cadena ‘123-45’ y ‘12345’ en el MaskFormatter en el ejemplo anterior. Ambas inserciones darán como resultado la misma cadena, ‘123-45__’. Cuando MaskFormatter está procesando la inserción en la posición de carácter 3 (el ‘-‘), pueden suceder dos cosas:

  1. Si el carácter insertado es ‘-‘, se acepta.
  2. Si el carácter insertado coincide con la máscara del siguiente carácter no literal, se acepta en la nueva ubicación.
  3. Cualquier otra cosa da como resultado una edición no válida

Por defecto MaskFormatter no permitirá ediciones no válidas, puede cambiar esto con el setAllowsInvalid método, y enviará ediciones en ediciones válidas (use el setCommitsOnValidEdit para cambiar esto).

Por defecto, MaskFormatter está en modo de sobrescritura. Es decir, cuando se escriben caracteres, no se inserta un nuevo carácter, sino que el carácter en la ubicación actual se reemplaza con el carácter recién escrito. Puede cambiar este comportamiento mediante el método setOverwriteMode.

Advertencia: Los objetos serializados de esta clase no serán compatibles con futuras versiones de Swing. El soporte de serialización actual es apropiado para almacenamiento a corto plazo o RMI entre aplicaciones que ejecutan la misma versión de Swing. A partir de 1.4, se ha agregado soporte para el almacenamiento a largo plazo de todos los JavaBeans java.beans paquete. Por favor mira XMLEncoder.

Ya que:
1.4

Resumen del constructor

Constructores
Constructor Descripción
MaskFormatter() Crea un MaskFormatter sin máscara.
MaskFormatter​(String mask) Crea un MaskFormatter con la máscara especificada.

Resumen del método

Modificador y tipo Método Descripción
String getInvalidCharacters() Devuelve los caracteres que no son válidos para la entrada.
String getMask() Devuelve la máscara de formato.
String getPlaceholder() Devuelve la cadena que se utilizará si el valor no completa completamente la máscara.
char getPlaceholderCharacter() Devuelve el carácter que se utilizará en lugar de los caracteres que no están presentes en el valor, es decir, el usuario debe completarlos.
String getValidCharacters() Devuelve los caracteres válidos que se pueden ingresar.
boolean getValueContainsLiteralCharacters() Devuelve verdadero si stringToValue debe devolver caracteres literales en la máscara.
void install​(JFormattedTextField ftf) Instala el DefaultFormatter en un particular JFormattedTextField.
void setInvalidCharacters​(String invalidCharacters) Permite restringir aún más los caracteres que se pueden ingresar.
void setMask​(String mask) Establece la máscara que dicta los caracteres legales.
void setPlaceholder​(String placeholder) Establece la cadena que se utilizará si el valor no completa completamente la máscara.
void setPlaceholderCharacter​(char placeholder) Establece el carácter que se utilizará en lugar de los caracteres que no están presentes en el valor, es decir, el usuario debe completarlos.
void setValidCharacters​(String validCharacters) Permite restringir aún más los caracteres que se pueden ingresar.
void setValueContainsLiteralCharacters​(boolean containsLiteralChars) Si es verdadero, el valor devuelto y el valor establecido también contendrán los caracteres literales en la máscara.
Object stringToValue​(String value) Analiza el texto, devolviendo la representación de Objeto apropiada de la Cadena value.
String valueToString​(Object value) Devuelve una representación de cadena del objeto value basado en la máscara.

Métodos declarados en la clase javax.swing.text.DefaultFormatter

clone, getAllowsInvalid, getCommitsOnValidEdit, getDocumentFilter, getNavigationFilter, getOverwriteMode, getValueClass, setAllowsInvalid, setCommitsOnValidEdit, setOverwriteMode, setValueClass

Métodos declarados en la clase javax.swing.JFormattedTextField.AbstractFormatter

getActions, getFormattedTextField, invalidEdit, setEditValid, uninstall

Métodos declarados en la clase java.lang.Object

equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Detalles del constructor

publicMaskFormatter()

Crea un MaskFormatter sin máscara.

publicMaskFormatter(String mask)throwsParseException

Crea un MaskFormatter con la máscara especificada. A ParseException será arrojado si mask es una máscara inválida.

Parámetros:
mask – la máscara
Lanza:
ParseException – si la máscara no contiene caracteres de máscara válidos

Detalles del método

setMask

publicvoid setMask​(String mask)throwsParseException

Establece la máscara que dicta los caracteres legales. Esto arrojará un ParseException si mask no es válido.

Parámetros:
mask – la máscara
Lanza:
ParseException – si la máscara no contiene caracteres de máscara válidos

getMask

publicStringgetMask()

Devuelve la máscara de formato.

Devoluciones:
Máscara que dicta los valores de carácter legal.

setValidCharacters

publicvoid setValidCharacters​(String validCharacters)

Permite restringir aún más los caracteres que se pueden ingresar. Solo los caracteres especificados en la máscara, no en la invalidCharacters, y en validCharacters se permitirá la entrada. Pasar nulo (el valor predeterminado) implica que los caracteres válidos solo están limitados por la máscara y los caracteres no válidos.

Parámetros:
validCharacters – Si no es nulo, especifica caracteres legales.

getValidCharacters

publicStringgetValidCharacters()

Devuelve los caracteres válidos que se pueden ingresar.

Devoluciones:
Personajes legales

setInvalidCharacters

publicvoid setInvalidCharacters​(String invalidCharacters)

Permite restringir aún más los caracteres que se pueden ingresar. Solo los caracteres especificados en la máscara, no en la invalidCharacters, y en validCharacters se permitirá la entrada. Pasar nulo (el valor predeterminado) implica que los caracteres válidos solo están limitados por la máscara y los caracteres válidos.

Parámetros:
invalidCharacters – Si no es nulo, especifica caracteres ilegales.

getInvalidCharacters

publicStringgetInvalidCharacters()

Devuelve los caracteres que no son válidos para la entrada.

Devoluciones:
caracteres ilegales.

setPlaceholder

publicvoid setPlaceholder​(String placeholder)

Establece la cadena que se utilizará si el valor no completa completamente la máscara. Un valor nulo implica que se debe usar el carácter de marcador de posición.

Parámetros:
placeholder – Cadena utilizada al formatear si el valor no llena completamente la máscara

getPlaceholder

publicStringgetPlaceholder()

Devuelve la cadena que se utilizará si el valor no completa completamente la máscara.

Devoluciones:
Cadena utilizada al formatear si el valor no llena completamente la máscara

setPlaceholderCharacter

publicvoid setPlaceholderCharacter​(char placeholder)

Establece el carácter que se utilizará en lugar de los caracteres que no están presentes en el valor, es decir, el usuario debe completarlos. El valor predeterminado es un espacio.

Esto solo es aplicable si la cadena de marcador de posición no se ha especificado o no completa completamente la máscara.

Parámetros:
placeholder – Carácter utilizado al formatear si el valor no llena completamente la máscara

getPlaceholderCharacter

publicchargetPlaceholderCharacter()

Devuelve el carácter que se utilizará en lugar de los caracteres que no están presentes en el valor, es decir, el usuario debe completarlos.

Devoluciones:
Carácter utilizado al formatear si el valor no llena completamente la máscara

setValueContainsLiteralCharacters

publicvoid setValueContainsLiteralCharacters​(boolean containsLiteralChars)

Si es verdadero, el valor devuelto y el valor establecido también contendrán los caracteres literales en la máscara.

Por ejemplo, si la máscara es '(###) ###-####', el valor actual es '(415) 555-1212', y valueContainsLiteralCharacters es verdad stringToValue volverá '(415) 555-1212'. Por otro lado, si valueContainsLiteralCharacters Es falso, stringToValue volverá '4155551212'.

Parámetros:
containsLiteralChars – Se usa para indicar si los caracteres literales en la máscara deben devolverse en stringToValue

getValueContainsLiteralCharacters

publicbooleangetValueContainsLiteralCharacters()

Devuelve verdadero si stringToValue debe devolver caracteres literales en la máscara.

Devoluciones:
Verdadero si los caracteres literales en la máscara deben devolverse en stringToValue

stringToValue

publicObject stringToValue​(String value)throwsParseException

Analiza el texto, devolviendo la representación de Objeto apropiada de la Cadena value. Esto quita los caracteres literales según sea necesario e invoca super stringToValue, de modo que si ha especificado una clase de valor (setValueClass) se creará una instancia del mismo. Esto arrojará un ParseException si el valor no coincide con la máscara actual. Referirse a setValueContainsLiteralCharacters(boolean) para obtener detalles sobre cómo se tratan los literales.

Anulaciones:
stringToValue en la clase DefaultFormatter
Parámetros:
value – Cadena para convertir
Devoluciones:
Representación de objetos de texto
Lanza:
ParseException – si hay un error en la conversión
Ver También:
setValueContainsLiteralCharacters(boolean)

valueToString

publicString valueToString​(Object value)throwsParseException

Devuelve una representación de cadena del objeto value basado en la máscara. Referirse a setValueContainsLiteralCharacters(boolean) para obtener detalles sobre cómo se tratan los literales.

Anulaciones:
valueToString en la clase DefaultFormatter
Parámetros:
value – Valor para convertir
Devoluciones:
Representación de cadena de valor
Lanza:
ParseException – si hay un error en la conversión
Ver también:
setValueContainsLiteralCharacters(boolean)

Instalar en pc

publicvoid install​(JFormattedTextField ftf)

Instala el DefaultFormatter en un particular JFormattedTextField. Esto invocará valueToString para convertir el valor actual del JFormattedTextField a una cadena. Esto luego instalará el Actions de getActions, los DocumentFilter regresó de getDocumentFilter y el NavigationFilter regresó de getNavigationFilter sobre la JFormattedTextField.

Las subclases normalmente solo necesitarán anular esto si desean instalar oyentes adicionales en el JFormattedTextField.

Si hay un ParseException al convertir el valor actual en una cadena, esto establecerá el texto en una cadena vacía y marcará el JFormattedTextField como si estuviera en un estado inválido.

Si bien este es un método público, generalmente solo es útil para subclases de JFormattedTextField. JFormattedTextField invocará este método en los momentos apropiados cuando cambie el valor o cambie su estado interno.

Anulaciones:
install en la clase DefaultFormatter
Parámetros:
ftf – JFormattedTextField para formatear, puede ser nulo, lo que indica la desinstalación del JFormattedTextField actual.