Admitiré que JFormattedTextField no es la clase más fácil de usar, y sí tiene problemas, pero como la mayoría de los componentes, hace un trabajo razonable en algunos aspectos y un mal trabajo en otros.
De hecho, le permite editar valores enteros a medida que se escriben los datos cuando utiliza MaskFormatter. Entonces, para tareas simples puede ser efectivo.
La edición de datos es una tarea compleja. Algunas veces necesita editar los datos tal como se ingresan (en el caso de verificar valores Enteros). Algunas veces necesita editar los datos después de haberlos ingresado (en el caso de validar una fecha). Entonces, por supuesto, debe decidir cómo manejar los datos no válidos.
Puede haber una cierta cantidad de configuración de los parámetros al realizar tareas no triviales. Es posible que no siempre funcionen de la forma que usted desea o de la manera en que lo espera, por lo que debe experimentar para saber cuándo puede/debe usar este componente.
El principal problema con JFormattedTextField es que está optimizado para un caso de uso raro, en lugar de uno común, mientras que falta un componente para la tarea común. AWT ya es bastante malo, pero Swing, una vez más, ha sido diseñado por personas que no tenían ni idea sobre el estado del arte en la programación de GUI, ¡y cometiendo los mismos errores dos veces era realmente malo! Si los diseñadores de Java y Swing hubieran mirado lo que Delphi o NeXt's Interface Builder pudieron hacer desde principios de los 90 y cómo lo hicieron, ¡tanto el lenguaje como Swing serían mucho más fáciles de usar! –