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, setValueClassgetActions, getFormattedTextField, invalidEdit, setEditValid, uninstallpublic 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 DefaultFormattervalue - Строка, чтобы преобразоватьParseException - если есть ошибка в преобразованииsetValueContainsLiteralCharacters(boolean)public String valueToString(Object value) throws ParseException
value основанный на маске. Обратитесь к setValueContainsLiteralCharacters(boolean) для деталей о том, как обрабатываются литералы.valueToString в class DefaultFormattervalue - Значение, чтобы преобразоватьParseException - если есть ошибка в преобразованииsetValueContainsLiteralCharacters(boolean)public void install(JFormattedTextField ftf)
DefaultFormatter на деталь JFormattedTextField. Это вызовет valueToString преобразовать текущую стоимость из JFormattedTextField к Строке. Это тогда установит Actions от getActions, DocumentFilter возвращенный из getDocumentFilter и NavigationFilter возвращенный из getNavigationFilter на JFormattedTextField. Подклассы должны будут обычно только переопределить это, если они хотят установить дополнительных слушателей на JFormattedTextField.
Если есть a ParseException в преобразовании текущей стоимости к Строке это установит текст в пустую Строку, и отметит JFormattedTextField как являющийся в недопустимом состоянии.
В то время как это - открытый метод, это обычно только полезно для подклассификаторов JFormattedTextField. JFormattedTextField вызовет этот метод в подходящее время, когда значение изменяется, или его изменения внутреннего состояния.
install в class DefaultFormatterftf - JFormattedTextField, чтобы отформатировать для, может быть нулевое указание, удаляют от текущего JFormattedTextField.
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92