public class MaskFormatter extends DefaultFormatter
MaskFormatter
используется, чтобы отформатировать и отредактировать строки. Поведение a MaskFormatter
управляется посредством Строковой маски, которая определяет допустимые символы, которые могут содержаться в определенном расположении в Document
модель. Следующие символы могут быть определены: Символ | Описание |
---|---|
# | Любое допустимое число, использование Character.isDigit . |
' | Символ ESC, используемый, чтобы выйти из любого из специальных символов форматирования. |
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('_'); formatter.getDisplayValue(tf, "123");
Привел бы к строке '123-____'. Если setPlaceholder("555-1212")
был вызван '123-1212', закончится. Строка заполнителя только используется на начальном формате на последующих форматах, только символ заполнителя будет использоваться.
Если a MaskFormatter
конфигурируется, чтобы только позволить допустимые символы (setAllowsInvalid(false)
) литеральные символы будут пропущены по мере необходимости, редактируя. Рассмотрите a 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
.
Предупреждение: Сериализированные объекты этого class не будут совместимыми с будущими выпусками Swing. Текущая поддержка сериализации является подходящей для краткосрочного хранения или RMI между приложениями, выполняющими ту же самую версию Swing. С 1.4, поддержка длительного хранения всего JavaBeansTM была добавлена к java.beans
пакет. Пожалуйста, см. XMLEncoder
.
Конструктор и Описание |
---|
MaskFormatter()
Создает MaskFormatter без маски.
|
MaskFormatter(String mask)
Создает a
MaskFormatter с указанной маской. |
Модификатор и Тип | Метод и Описание |
---|---|
Строка |
getInvalidCharacters()
Возвращает символы, которые не допустимы для ввода.
|
Строка |
getMask()
Возвращает маску форматирования.
|
Строка |
getPlaceholder()
Возвращает Строку, чтобы использовать, если значение не полностью заполняет маску.
|
char |
getPlaceholderCharacter()
Возвращает символ, чтобы использовать вместо символов, которые не присутствуют в значении, то есть пользователь должен заполнить их.
|
Строка |
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)
Если это правда, возвращенное значение и значение набора будут также содержать литеральные символы в маске.
|
Объект |
stringToValue(String value)
Анализирует текст, возвращая соответствующее Объектное представление Строки
value . |
Строка |
valueToString(Object value)
Возвращает Строковое представление Объекта
value основанный на маске. |
clone, getAllowsInvalid, getCommitsOnValidEdit, getDocumentFilter, getNavigationFilter, getOverwriteMode, getValueClass, setAllowsInvalid, setCommitsOnValidEdit, setOverwriteMode, setValueClass
getActions, getFormattedTextField, invalidEdit, setEditValid, uninstall
public MaskFormatter()
public MaskFormatter(String mask) throws ParseException
MaskFormatter
с указанной маской. A ParseException
будет брошен если mask
недопустимая маска.ParseException
- если маска не содержит допустимые символы маскиpublic void setMask(String mask) throws ParseException
ParseException
если mask
не допустимо.ParseException
- если маска не содержит допустимые символы маскиpublic String getMask()
public void setValidCharacters(String validCharacters)
invalidCharacters
, и в validCharacters
будет позволен быть введенным. Передача в нуле (значение по умолчанию) подразумевает, что допустимые символы только связываются маской и недопустимыми символами.validCharacters
- Если ненуль, определяет юридические символы.public String getValidCharacters()
public void setInvalidCharacters(String invalidCharacters)
invalidCharacters
, и в validCharacters
будет позволен быть введенным. Передача в нуле (значение по умолчанию) подразумевает, что допустимые символы только связываются маской и допустимыми символами.invalidCharacters
- Если ненуль, определяет запрещенные символы.public String getInvalidCharacters()
public void setPlaceholder(String placeholder)
placeholder
- Строка, используемая, форматируя, если значение не полностью заполняет маскуpublic String getPlaceholder()
public void setPlaceholderCharacter(char placeholder)
Это только применимо, если строка заполнителя не была определена, или не полностью заполняет маску.
placeholder
- Символ, используемый, форматируя, если значение не полностью заполняет маскуpublic char getPlaceholderCharacter()
public void setValueContainsLiteralCharacters(boolean containsLiteralChars)
Например, если маска '(###) ###-####'
, текущая стоимость '(415) 555-1212'
, и valueContainsLiteralCharacters
истина stringToValue
возвратится '(415) 555-1212'
. С другой стороны, если valueContainsLiteralCharacters
ложь, stringToValue
возвратится '4155551212'
.
containsLiteralChars
- Используемый, чтобы указать, должны ли литеральные символы в маске быть возвращены в stringToValuepublic boolean getValueContainsLiteralCharacters()
stringToValue
должен возвратить литеральные символы в маске.public Object stringToValue(String value) throws ParseException
value
. Это разделяет литеральные символы по мере необходимости и вызывает supers stringToValue
, так, чтобы, если Вы определили значение class (setValueClass
) экземпляр этого будет создаваться. Это бросит a ParseException
если значение не соответствует текущую маску. Обратитесь к setValueContainsLiteralCharacters(boolean)
для деталей о том, как обрабатываются литералы.stringToValue
в class DefaultFormatter
value
- Строка, чтобы преобразоватьParseException
- если есть ошибка в преобразованииsetValueContainsLiteralCharacters(boolean)
public String valueToString(Object value) throws ParseException
value
основанный на маске. Обратитесь к setValueContainsLiteralCharacters(boolean)
для деталей о том, как обрабатываются литералы.valueToString
в class DefaultFormatter
value
- Значение, чтобы преобразоватьParseException
- если есть ошибка в преобразованииsetValueContainsLiteralCharacters(boolean)
public void install(JFormattedTextField ftf)
DefaultFormatter
на деталь JFormattedTextField
. Это вызовет valueToString
преобразовать текущую стоимость из JFormattedTextField
к Строке. Это тогда установит Action
s от getActions
, DocumentFilter
возвращенный из getDocumentFilter
и NavigationFilter
возвращенный из getNavigationFilter
на JFormattedTextField
. Подклассы должны будут обычно только переопределить это, если они хотят установить дополнительных слушателей на JFormattedTextField
.
Если есть a ParseException
в преобразовании текущей стоимости к Строке это установит текст в пустую Строку, и отметит JFormattedTextField
как являющийся в недопустимом состоянии.
В то время как это - открытый метод, это обычно только полезно для подклассификаторов JFormattedTextField
. JFormattedTextField
вызовет этот метод в подходящее время, когда значение изменяется, или его изменения внутреннего состояния.
install
в class DefaultFormatter
ftf
- JFormattedTextField, чтобы отформатировать для, может быть нулевое указание, удаляют от текущего JFormattedTextField.
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92