Класс 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 | Модификатор и тип | Метод | Описание |
|---|---|---|
Object |
clone() |
Создаёт копию DefaultFormatter. |
boolean |
getAllowsInvalid() |
Возвращает сведения о том, допускается ли временно недопустимое значение во время редактирования. |
boolean |
getCommitsOnValidEdit() |
Возвращает сведения о том, когда изменения передаются обратно в JFormattedTextField. |
protected DocumentFilter |
getDocumentFilter() |
Возвращает DocumentFilter, используемый для ограничения символов, вводимых в JFormattedTextField. |
protected NavigationFilter |
getNavigationFilter() |
Возвращает NavigationFilter, используемый для ограничения положения курсора. |
boolean |
getOverwriteMode() |
Возвращает поведение при вставке символов. |
Class |
getValueClass() |
Возвращает класс, используемый для создания новых объектов. |
void |
setAllowsInvalid |
Задаёт, допускается ли временно недопустимое значение во время редактирования (то есть, вызывает ли stringToValue исключение ParseException). |
void |
setCommitsOnValidEdit |
Задаёт, когда изменения передаются обратно в JFormattedTextField. |
void |
setOverwriteMode |
Настраивает поведение при вставке символов. |
void |
setValueClass |
Задаёт класс, используемый для создания новых объектов. |
Методы, объявленные в классе JFormattedTextField.AbstractFormatter
getActions, getFormattedTextField, invalidEdit, setEditValid, uninstall | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Action[] |
getActions() |
Переопределите метод в подклассе, если хотите предоставить собственный набор Action. |
protected JFormattedTextField |
getFormattedTextField() |
Возвращает текущий JFormattedTextField, к которому подключён AbstractFormatter. |
protected void |
invalidEdit() |
Этот метод следует вызывать, когда пользователь вводит недопустимый символ. |
protected void |
setEditValid |
Вызовите этот метод, чтобы обновить свойство editValid объекта JFormattedTextField. |
void |
uninstall() |
Удаляет все состояния, которые AbstractFormatter мог установить для JFormattedTextField. |
Методы, объявленные в классе Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
equals |
Указывает, равен ли какой-либо другой объект этому объекту. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии. Финализация устарела и будет удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо до истечения заданного времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо до истечения заданного времени. |
Подробное описание конструкторов
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.