Spec-Zone.ru › OpenJDK 27

Класс MaskFormatter

java.lang.Object
javax.swing.JFormattedTextField.AbstractFormatter
javax.swing.text.DefaultFormatter
javax.swing.text.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 ('-'), возможны два варианта:

  1. Если вставляемый символ — '-', он принимается.
  2. Если вставляемый символ соответствует маске для следующего небуквального символа, он принимается в новой позиции.
  3. Любой другой символ приводит к недопустимому изменению.

По умолчанию MaskFormatter не допускает недопустимые изменения. Это поведение можно изменить с помощью метода setAllowsInvalid. При допустимых изменениях изменения фиксируются (для изменения этого поведения используйте setCommitsOnValidEdit).

По умолчанию MaskFormatter работает в режиме перезаписи. То есть при вводе символов новый символ не вставляется, а заменяет символ в текущей позиции. Изменить это поведение можно с помощью метода setOverwriteMode.

Предупреждение: Сериализованные объекты этого класса не будут совместимы с будущими версиями Swing. Текущая поддержка сериализации подходит для кратковременного хранения или RMI между приложениями, работающими с одной и той же версией Swing. Начиная с версии 1.4, в пакет java.beans добавлена поддержка долгосрочного хранения всех JavaBeans. См. XMLEncoder.

Начиная с версии:
1.4

Краткое описание конструкторов

Конструктор Описание
MaskFormatter()
Создаёт MaskFormatter без маски.
MaskFormatter(String mask)
Создаёт MaskFormatter с указанной маской.

Краткое описание методов

Модификатор и тип Метод Описание
String getInvalidCharacters()
Возвращает символы, недопустимые для ввода.
String getMask()
Возвращает маску форматирования.
String getPlaceholder()
Возвращает строку, используемую, если значение не полностью заполняет маску.
char getPlaceholderCharacter()
Возвращает символ, используемый вместо отсутствующих в значении символов, которые должен заполнить пользователь.
String getValidCharacters()
Возвращает допустимые символы, которые можно вводить.
boolean getValueContainsLiteralCharacters()
Возвращает true, если stringToValue должен возвращать буквальные символы маски.
void install(JFormattedTextField ftf)
Устанавливает DefaultFormatter для определённого JFormattedTextField.
void setInvalidCharacters(String invalidCharacters)
Позволяет дополнительно ограничить вводимые символы.
void setMask(String mask)
Задаёт маску, определяющую допустимые символы.
void setPlaceholder(String placeholder)
Задаёт строку, используемую, если значение не полностью заполняет маску.
void setPlaceholderCharacter(char placeholder)
Задаёт символ, используемый вместо отсутствующих в значении символов, которые должен заполнить пользователь.
void setValidCharacters(String validCharacters)
Позволяет дополнительно ограничить вводимые символы.
void setValueContainsLiteralCharacters(boolean containsLiteralChars)
Если значение равно true, возвращаемое значение и задаваемое значение также будут содержать буквальные символы маски.
Object stringToValue(String value)
Разбирает текст и возвращает соответствующее представление объекта для строки value.
String valueToString(Object value)
Возвращает строковое представление объекта 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(boolean allowsInvalid)
Задаёт, допускается ли временно недопустимое значение во время редактирования (то есть, вызывает ли stringToValue исключение ParseException).
void setCommitsOnValidEdit(boolean commit)
Задаёт, когда изменения передаются обратно в JFormattedTextField.
void setOverwriteMode(boolean overwriteMode)
Настраивает поведение при вставке символов.
void setValueClass(Class<?> valueClass)
Задаёт класс, используемый для создания новых объектов.

Методы, объявленные в классе JFormattedTextField.AbstractFormatter

getActions, getFormattedTextField, invalidEdit, setEditValid, uninstall
Модификатор и тип Метод Описание
protected Action[] getActions()
Переопределите метод в подклассе, если хотите предоставить собственный набор Action.
protected JFormattedTextField getFormattedTextField()
Возвращает текущий JFormattedTextField, к которому подключён AbstractFormatter.
protected void invalidEdit()
Этот метод следует вызывать, когда пользователь вводит недопустимый символ.
protected void setEditValid(boolean valid)
Вызовите этот метод, чтобы обновить свойство editValid объекта JFormattedTextField.
void uninstall()
Удаляет все состояния, которые AbstractFormatter мог установить для JFormattedTextField.

Методы, объявленные в классе Object

equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
boolean equals(Object obj)
Указывает, равен ли какой-либо другой объект этому объекту.
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(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо до истечения заданного времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо до истечения заданного времени.

Подробное описание конструкторов

MaskFormatter

public MaskFormatter()
Создаёт 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)
Задаёт строку, используемую, если значение не полностью заполняет маску. Значение null означает, что следует использовать символ-заполнитель.
Параметры:
placeholder - строка, используемая при форматировании, если значение не полностью заполняет маску

getPlaceholder

public String getPlaceholder()
Возвращает строку, используемую, если значение не полностью заполняет маску.
Возвращает:
Строка, используемая при форматировании, если значение не полностью заполняет маску

setPlaceholderCharacter

public void setPlaceholderCharacter(char placeholder)
Задаёт символ, используемый вместо отсутствующих в значении символов, которые должен заполнить пользователь. Значение по умолчанию — пробел.

Этот параметр применяется только в том случае, если строка-заполнитель не задана или не полностью заполняет маску.

Параметры:
placeholder - символ, используемый при форматировании, если значение не полностью заполняет маску

getPlaceholderCharacter

public char getPlaceholderCharacter()
Возвращает символ, используемый вместо отсутствующих в значении символов, которые должен заполнить пользователь.
Возвращает:
Символ, используемый при форматировании, если значение не полностью заполняет маску

setValueContainsLiteralCharacters

public void setValueContainsLiteralCharacters(boolean containsLiteralChars)
Если значение равно true, возвращаемое значение и задаваемое значение также будут содержать буквальные символы маски.

Например, если маска равна '(###) ###-####', текущее значение равно '(415) 555-1212', а valueContainsLiteralCharacters равно true, stringToValue вернёт '(415) 555-1212'. С другой стороны, если valueContainsLiteralCharacters равно false, stringToValue вернёт '4155551212'.

Параметры:
containsLiteralChars - указывает, следует ли возвращать буквальные символы маски в stringToValue

getValueContainsLiteralCharacters

public boolean getValueContainsLiteralCharacters()
Возвращает true, если stringToValue должен возвращать буквальные символы маски.
Возвращает:
True, если буквальные символы маски следует возвращать в stringToValue

stringToValue

public Object stringToValue(String value) throws ParseException
Разбирает текст и возвращает соответствующее представление объекта для строки value. При необходимости удаляет буквальные символы и вызывает метод суперкласса stringToValue, чтобы создать экземпляр указанного вами класса значения (setValueClass). Если значение не соответствует текущей маске, будет выброшено исключение ParseException. Подробности об обработке буквальных символов см. в разделе setValueContainsLiteralCharacters(boolean).
Переопределяет:
stringToValue в классе DefaultFormatter
Параметры:
value - строка для преобразования
Возвращает:
Объектное представление текста
Исключения:
ParseException - если при преобразовании произошла ошибка
См. также:
  • setValueContainsLiteralCharacters(boolean)

valueToString

public String valueToString(Object value) throws ParseException
Возвращает строковое представление объекта value на основе маски. Подробности об обработке буквальных символов см. в разделе setValueContainsLiteralCharacters(boolean).
Переопределяет:
valueToString в классе DefaultFormatter
Параметры:
value - значение для преобразования
Возвращает:
Строковое представление значения
Исключения:
ParseException - если при преобразовании произошла ошибка
См. также:
  • setValueContainsLiteralCharacters(boolean)

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.

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API