JFormattedTextField

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.

Пример для денежного поля:

Когда будете вводить новое значение в это поле, не стираете надпись «руб.».
Если нужен денежный формат для другой валюты, то надо указать соответствующую локаль:

rublenf = NumberFormat.getCurrencyInstance(Locale.UK);

здесь перед денежной суммой будет указан знак фунта стерлингов.

Проценты:

Когда будете вводить новое значение в это поле, не стираете знак «%».

Дата:

Функция DateFormat.getDateInstance() возвращает форматтер даты для локали, установленной на данном компьютере.

Функция propertyChange:

Получаем JFormattedTextField, Java

такой результат.