Spec-Zone.ru › OpenJDK 24

Класс 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 контролируется с помощью маски String, которая определяет допустимые символы, которые могут быть содержаться в определённом месте в модели 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, добавлена поддержка долгосрочного хранения всех JavaBeans в пакете java.beans. Обратитесь к 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, основанное на маске.

Методы, объявленные в классе javax.swing.text.DefaultFormatter

clone, getAllowsInvalid, getCommitsOnValidEdit, getDocumentFilter, getNavigationFilter, getOverwriteMode, getValueClass, setAllowsInvalid, setCommitsOnValidEdit, setOverwriteMode, setValueClass

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

getActions, getFormattedTextField, invalidEdit, setEditValid, uninstall

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

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

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

MaskFormatter

public MaskFormatter()
Создаёт MaskFormatter без маски.

MaskFormatter

public MaskFormatter(String mask) throws ParseException
Создаёт MaskFormatter с заданной маской. Будет брошено исключение ParseException, если mask является некорректной маской.
Параметры:
mask - маска
Исключения:
ParseException - если маска не содержит допустимых символов маски

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

setMask

public void setMask(String mask) throws ParseException
Устанавливает маску, определяющую допустимые символы. Бросит исключение ParseException, если mask не является корректной.
Параметры:
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 в строку. Затем установит Action из getActions, DocumentFilter, возвращаемое из getDocumentFilter, и NavigationFilter, возвращаемое из getNavigationFilter, на JFormattedTextField.

Подклассы обычно переопределяют только этот метод, если они хотят установить дополнительные слушатели на JFormattedTextField.

Если при преобразовании текущего значения в строку возникает ошибка, это установит текст в пустую строку и пометит 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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/javax/swing/text/MaskFormatter.html

Spec-Zone.ru

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