Класс MaskFormatter
- Все реализованные интерфейсы:
Serializable, Cloneable
public class MaskFormatter extends DefaultFormatter
MaskFormatter используется для форматирования и редактирования строк. Поведение MaskFormatter определяется строковой маской, которая указывает допустимые символы в каждой позиции модели Document. Можно указать следующие символы: | Символ | Описание |
|---|---|
| # | Любая допустимая цифра, используется Character.isDigit. |
| ' | Символ экранирования, используется для экранирования специальных символов форматирования. |
| U | Любой символ (Character.isLetter). Все строчные буквы преобразуются в прописные. |
| L | Любой символ (Character.isLetter). Все прописные буквы преобразуются в строчные. |
| A | Любой символ или цифра (Character.isLetter или Character.isDigit). |
| ? | Любой символ (Character.isLetter). |
| * | Любой символ. |
| H | Любой шестнадцатеричный символ (0-9, a-f или A-F). |
Обычно символы соответствуют одному символу, но в некоторых языках это не так. Маска применяется к каждому символу, поэтому она будет подстраиваться, чтобы вместить необходимое количество символов.
Можно дополнительно ограничить вводимые символы с помощью методов setInvalidCharacters и setValidCharacters. Метод setInvalidCharacters позволяет указать недопустимые символы. Метод setValidCharacters позволяет указать допустимые символы. Например, следующий фрагмент кода эквивалентен маске '0xHHH' без указания недопустимых или допустимых символов:
MaskFormatter formatter = new MaskFormatter("0x***");
formatter.setValidCharacters("0123456789abcdefABCDEF");
При первоначальном форматировании значения, если длина строки меньше длины маски, возможно два варианта. Будет использована либо строка-заполнитель, либо символ-заполнитель. Приоритет отдается строке-заполнителю. Например:
MaskFormatter formatter = new MaskFormatter("###-####");
formatter.setPlaceholderCharacter('_');
System.out.println(formatter.valueToString("123"));
В результате получится строка '123-____'. Если вызвать setPlaceholder("555-1212"), результатом будет '123-1212'. Строка-заполнитель используется только при первоначальном форматировании, при последующих форматированиях используется только символ-заполнитель.
Если MaskFormatter настроен так, чтобы допускать только допустимые символы (setAllowsInvalid(false)), при редактировании буквальные символы будут пропускаться по мере необходимости. Рассмотрим MaskFormatter с маской "###-####" и текущим значением "555-1212". Перемещение по полю клавишей со стрелкой вправо приведет к следующему результату (| обозначает положение курсора):
|555-1212 5|55-1212 55|5-1212 555-|1212 555-1|212Символ '-' является буквальным (недоступным для редактирования) и пропускается.
При редактировании действует аналогичное поведение. Рассмотрим вставку строк '123-45' и '12345' в MaskFormatter из предыдущего примера. В обоих случаях получится одна и та же строка: '123-45__'. При обработке MaskFormatter вставки в позицию символа 3 ('-') возможно два варианта:
- Если вставляемый символ — '-', он принимается.
- Если вставляемый символ соответствует маске для следующего небуквального символа, он принимается в новой позиции.
- В противном случае редактирование считается недопустимым.
По умолчанию MaskFormatter не допускает недопустимые изменения. Это поведение можно изменить методом setAllowsInvalid. Допустимые изменения фиксируются (изменить это поведение можно с помощью setCommitsOnValidEdit).
По умолчанию MaskFormatter работает в режиме перезаписи. То есть при вводе символов новый символ не вставляется, а заменяет символ в текущей позиции. Это поведение можно изменить с помощью метода setOverwriteMode.
Предупреждение: сериализованные объекты этого класса несовместимы с будущими выпусками Swing. Текущая поддержка сериализации подходит для кратковременного хранения или RMI между приложениями, работающими с одной и той же версией Swing. Начиная с версии 1.4 в пакет java.beans добавлена поддержка долговременного хранения всех JavaBeans. См. XMLEncoder.
- Начиная с версии:
- 1.4
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
MaskFormatter() |
Создает MaskFormatter без маски. |
MaskFormatter |
Создает MaskFormatter с указанной маской. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
String |
getInvalidCharacters() |
Возвращает символы, недопустимые для ввода. |
String |
getMask() |
Возвращает маску форматирования. |
String |
getPlaceholder() |
Возвращает строку, используемую, если значение не полностью заполняет маску. |
char |
getPlaceholderCharacter() |
Возвращает символ, используемый вместо отсутствующих в значении символов, которые пользователь должен заполнить. |
String |
getValidCharacters() |
Возвращает допустимые символы, которые можно вводить. |
boolean |
getValueContainsLiteralCharacters() |
Возвращает true, если stringToValue должен возвращать буквальные символы маски. |
void |
install |
Устанавливает DefaultFormatter для определенного JFormattedTextField. |
void |
setInvalidCharacters |
Позволяет дополнительно ограничить набор вводимых символов. |
void |
setMask |
Задает маску, определяющую допустимые символы. |
void |
setPlaceholder |
Задает строку, используемую, если значение не полностью заполняет маску. |
void |
setPlaceholderCharacter |
Задает символ, используемый вместо отсутствующих в значении символов, которые пользователь должен заполнить. |
void |
setValidCharacters |
Позволяет дополнительно ограничить набор вводимых символов. |
void |
setValueContainsLiteralCharacters |
Если значение равно true, возвращаемое и задаваемое значения также будут содержать буквальные символы маски. |
Object |
stringToValue |
Разбирает текст и возвращает соответствующее представление строки value в виде объекта. |
String |
valueToString |
Возвращает строковое представление объекта value на основе маски. |
Методы, объявленные в классе DefaultFormatter
clone, getAllowsInvalid, getCommitsOnValidEdit, getDocumentFilter, getNavigationFilter, getOverwriteMode, getValueClass, setAllowsInvalid, setCommitsOnValidEdit, setOverwriteMode, setValueClass
Методы, объявленные в классе JFormattedTextField.AbstractFormatter
getActions, getFormattedTextField, invalidEdit, setEditValid, uninstall
Подробное описание конструкторов
MaskFormatter
public MaskFormatter()
MaskFormatter
public MaskFormatter(String mask) throws ParseException
MaskFormatter с указанной маской. Если mask является недопустимой маской, будет выброшено ParseException.- Параметры:
-
mask— маска - Исключения:
-
ParseException— если маска содержит недопустимые символы маски
Подробное описание методов
setMask
public void setMask(String mask) throws ParseException
mask недопустима, будет выброшено ParseException.- Параметры:
-
mask— маска - Исключения:
-
ParseException— если маска содержит недопустимые символы маски
getMask
public String getMask()
- Возвращает:
- Маска, определяющая допустимые значения символов.
setValidCharacters
public void setValidCharacters(String validCharacters)
invalidCharacters и входящие в validCharacters. Передача null (значение по умолчанию) означает, что допустимые символы ограничиваются только маской и недопустимыми символами.- Параметры:
-
validCharacters— если значение не равно null, задает допустимые символы.
getValidCharacters
public String getValidCharacters()
- Возвращает:
- Допустимые символы
setInvalidCharacters
public void setInvalidCharacters(String invalidCharacters)
invalidCharacters и входящие в validCharacters. Передача null (значение по умолчанию) означает, что допустимые символы ограничиваются только маской и допустимыми символами.- Параметры:
-
invalidCharacters— если значение не равно null, задает недопустимые символы.
getInvalidCharacters
public String getInvalidCharacters()
- Возвращает:
- Недопустимые символы.
setPlaceholder
public void setPlaceholder(String placeholder)
- Параметры:
-
placeholder— строка, используемая при форматировании, если значение не полностью заполняет маску
getPlaceholder
public String getPlaceholder()
- Возвращает:
- Строка, используемая при форматировании, если значение не полностью заполняет маску
setPlaceholderCharacter
public void setPlaceholderCharacter(char placeholder)
Этот параметр применяется только в том случае, если строка-заполнитель не задана или не полностью заполняет маску.
- Параметры:
-
placeholder— символ, используемый при форматировании, если значение не полностью заполняет маску
getPlaceholderCharacter
public char getPlaceholderCharacter()
- Возвращает:
- Символ, используемый при форматировании, если значение не полностью заполняет маску
setValueContainsLiteralCharacters
public void setValueContainsLiteralCharacters(boolean containsLiteralChars)
Например, если маска равна '(###) ###-####', текущее значение равно '(415) 555-1212', а valueContainsLiteralCharacters равно true, stringToValue вернет '(415) 555-1212'. С другой стороны, если valueContainsLiteralCharacters равно false, stringToValue вернет '4155551212'.
- Параметры:
-
containsLiteralChars— указывает, следует ли возвращать буквальные символы маски в stringToValue
getValueContainsLiteralCharacters
public boolean getValueContainsLiteralCharacters()
stringToValue должен возвращать буквальные символы маски.- Возвращает:
- True, если буквальные символы маски должны возвращаться в stringToValue
stringToValue
public Object stringToValue(String value) throws ParseException
value в виде объекта. При необходимости удаляет буквальные символы и вызывает stringToValue суперкласса, поэтому, если задан класс значения (setValueClass), будет создан его экземпляр. Если значение не соответствует текущей маске, будет выброшено ParseException. Сведения об обработке буквальных символов см. в разделе setValueContainsLiteralCharacters(boolean).- Переопределяет:
-
stringToValueв классеDefaultFormatter - Параметры:
-
value— строка для преобразования - Возвращает:
- Представление текста в виде объекта
- Исключения:
-
ParseException— если при преобразовании произошла ошибка - См. также:
valueToString
public String valueToString(Object value) throws ParseException
value на основе маски. Сведения об обработке буквальных символов см. в разделе setValueContainsLiteralCharacters(boolean).- Переопределяет:
-
valueToStringв классеDefaultFormatter - Параметры:
-
value— значение для преобразования - Возвращает:
- Строковое представление значения
- Исключения:
-
ParseException— если при преобразовании произошла ошибка - См. также:
install
public void install(JFormattedTextField ftf)
DefaultFormatter для указанного JFormattedTextField. Вызывает valueToString для преобразования текущего значения из JFormattedTextField в строку. Затем для JFormattedTextField устанавливаются Action из getActions, DocumentFilter, возвращаемый методом getDocumentFilter, и NavigationFilter, возвращаемый методом getNavigationFilter. Обычно подклассам требуется переопределять этот метод только в том случае, если нужно установить дополнительные прослушиватели для JFormattedTextField.
Если при преобразовании текущего значения в строку возникает ParseException, текст устанавливается в пустую строку, а JFormattedTextField помечается как находящийся в недопустимом состоянии.
Хотя этот метод является общедоступным, обычно он полезен только для разработчиков подклассов JFormattedTextField. JFormattedTextField вызывает этот метод в соответствующие моменты при изменении значения или внутреннего состояния.
- Переопределяет:
-
installв классеDefaultFormatter - Параметры:
-
ftf— JFormattedTextField, для которого выполняется форматирование; может быть null, что означает удаление форматирования с текущего JFormattedTextField.
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/javax/swing/text/MaskFormatter.html