Nuestro team de expertos pasados varios días de investigación y de recopilar de datos, dieron con la respuesta, deseamos que resulte de utilidad en tu plan.
- 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:
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:
- Si el carácter insertado es ‘-‘, se acepta.
- Si el carácter insertado coincide con la máscara del siguiente carácter no literal, se acepta en la nueva ubicación.
- 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
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
Crea un MaskFormatter sin máscara.
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 claseDefaultFormatter
- 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 claseDefaultFormatter
- 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 Action
s 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 claseDefaultFormatter
- Parámetros:
ftf
– JFormattedTextField para formatear, puede ser nulo, lo que indica la desinstalación del JFormattedTextField actual.
Si te apasiona este mundo, tienes la habilidad dejar un artículo acerca de qué le añadirías a esta sección.