Spec-Zone.ru › OpenJDK 25

Класс 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

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

getActions, getFormattedTextField, invalidEdit, setEditValid, uninstall

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

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

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

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, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/javax/swing/text/MaskFormatter.html

Spec-Zone.ru

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