Я делал такие вещи довольно часто, и у меня есть два предложения.
Стандартный способ справиться с этим - использовать класс InputVerifier. Это, однако, работает только тогда, когда компонент ввода теряет фокус - он предназначен для предотвращения перехода пользователя из поля ввода, когда оно недопустимо, но не проверяет до тех пор.
Другой способ, которым я это сделал, - проверять достоверность при каждом нажатии клавиши, но не выводить сообщение, когда оно недействительно. Вместо этого используйте цвет для обозначения действительности - например, покрасьте его в красный цвет, если он недействителен, и черный, если он действителен. Это не так навязчиво, как сообщение. Вы можете использовать всплывающую подсказку, чтобы дать более подробный отзыв.
Вы также можете комбинировать эти методы.