суббота, 24 сентября 2016 г.

VAMaskField — текст по маске

С масками приходится встречаться очень часто. Во всех языках программирования, с которыми приходилось сталкиваться, находилось 2-3 достойных рабочих варианта масок, полностью удовлетворяющих условиям задачи. То есть, можно было даже выбирать. А вот для JavaFX картина оказалось другой — подходящих масок не оказалось, и пришлось разработать самостоятельно.
На мой взгляд, получилось довольно просто (собственно не очень и хотелось усложнять) и очень функционально.

MaskField и примеры использования можно скачать здесь.

Чтобы начать использовать маски в своем проекте, скопируйте файл MaskField.java. После этого, можно программно, или в файле разметки, добавлять MaskField. MaskField наследник TextField, поэтому все что вы делали с TextField, можно делать и с MaskField.


Для того чтобы сформировать правило отображения той или иной маски предусмотрены три свойства:

  • mask — задает непосредственно саму маску и является обязательным
  • whatMask — флаги, которые показывает какой символ в свойстве mask константа, а какой принадлежит маске
  • placeholder — символы, задающие вид маски, которая не заполнена
Поскольку нам нужно различать «замаскированный» текст и «чистый» — тот что вводил пользователь, предусмотрено свойство:

  • plainText

Свойство mask

Предусмотрены следующие символы:

D — любые цифры

A — любые буквы

W — любые цифры или буквы

Все остальные будут интерпретироваться как неизменяемый текст.


Свойство whatMask

Символ # означает что соответствующий символ свойства mask содержит спец символ (D, A или W). Все остальные символы следует задавать "-".


Свойство placeholder

По умолчанию все позиции маски, куда можно ввести текст отображены знаком «_». Но благодаря свойству placeholder каждой позиции можно задать свой знак.

При использовании свойств whatMask и placeholder рекомендуется использовать строки той же длины что и в свойстве mask.


Пример использования


Номер телефона:

<MaskField mask="+7(DDD)DDD-DDDD"/>

Номер автомобиля. При этом мы визуально показываем где в маске буквы, а где цифры:

<MaskField mask="AA DDD AAA" placeholder="__ ### ___"/>

А теперь просто интересный случай. Пусть нам нужно вводить число, но перед числом у нас должна быть статическая надпись «DIGIT:». Если мы напишем так:

<MaskField mask="DIGIT: DDDD"/>

то первый символ «D» начнет восприниматься как позиция для ввода цифры. Поэтому в этом случае нам нужно использовать whatMask.

<MaskField mask="DIGIT: DDDD" whatMask="-------####"/>

Основные изюминки разработанного элемента управления VAMaskField показал. 

Комментариев нет:

Отправить комментарий