Java JFormattedTextField для ввода даты

У меня возникли проблемы с созданием JFormattedTextField для использования дат в формате dd/MM/yyyy. В частности, когда пользователь вводит текст, курсор должен "перепрыгивать" косые черты и переходить непосредственно к следующей позиции числа.

Кроме того, JFormattedTextField должен проверить, является ли введенная дата действительной, и как-то отклонить ее, если дата недействительна, или "исправить ее" на допустимую дату, например, если пользователь ввел "13" в качестве месяца, установите его как "01" "и добавить +1 к году.

Я попытался использовать маску ("##/##/####") с методом validate() JFormattedTextField, чтобы проверить, является ли дата действительной, но кажется, что эти два не работают хорошо вместе (или я Я слишком зеленый на Java, чтобы знать, как...:), и тогда пользователь может напечатать что-нибудь на поле.

Любая помощь очень ценится! Спасибо!

2 ответа

Решение

Возможно, вам придется использовать обычный JTextField и вызвать setDocument() с пользовательским документом. Я рекомендую расширить PlainDocument, чтобы упростить проверку ввода при изменении документа и добавлять косые черты по мере необходимости.

Попробуйте использовать JCalendar

Другие вопросы по тегам