JFormattedTextField
Класс JFormattedTextField унаследован от JTextField. JFormattedTextField имеет поле Object value и форматтер.
После того как пользователь ввёл данные в элемент управления JFormattedTextField и нажал Enter или фокус ввода перешёл на другой элемент, данные поля ввода сохраняются в объекте value. Объект Format транслирует данные между текстовым полем ввода элемента управления JFormattedTextField и value. Возможно применение объектов Format и символьных масок. Во всех примерах значение в поле value выводится на консоль.
Объект Format для поля типа Integer и само поле:
Установим начальное значение value:
Другой вариант — использовать форматтер по умолчанию для Integer. Просто установим значение типа Integer в value:
Изменения в текстовом поле ввода отслеживает PropertyChangeListener
Теперь поле типа Double:
Функции dnf.setMaximumFractionDigits(2) и dnf.setMinimumFractionDigits(2) определяют количество знаков в дробной части, а функции dnf.setMaximumIntegerDigits(2)и dnf.setMinimumIntegerDigits(1) определяют количество знаков до запятой. Обратите внимание, речь идёт о форматтере, т.е. о представлении числа в текстовом поле. Число, хранящееся в value, может оказаться иным.
Телефонный номер представлен в поле JFormattedTextField tlfField:
Здесь использован объект MaskFormatter.
Пример для денежного поля:
Когда будете вводить новое значение в это поле, не стираете надпись «руб.».
Если нужен денежный формат для другой валюты, то надо указать соответствующую локаль:
здесь перед денежной суммой будет указан знак фунта стерлингов.
Проценты:
Когда будете вводить новое значение в это поле, не стираете знак «%».
Дата:
Функция DateFormat.getDateInstance() возвращает форматтер даты для локали, установленной на данном компьютере.
Функция propertyChange:
Получаем
такой результат.