Ammetto che JFormattedTextField non è la classe più semplice da utilizzare e sì ha problemi ma, come la maggior parte dei componenti, svolge un lavoro ragionevole in alcune cose e un cattivo lavoro in altri.
In effetti consente di modificare i valori Integer man mano che i dati vengono digitati quando si utilizza MaskFormatter. Quindi per compiti semplici può essere efficace.
La modifica dei dati è un'operazione complessa. A volte è necessario modificare i dati mentre vengono immessi (nel caso di controllo dei valori Integer). A volte è necessario modificare i dati dopo che è stato inserito (nel caso di convalida di una data). Quindi, ovviamente, devi decidere come gestire i dati non validi.
Ci può essere una certa quantità di configurazione dei parametri quando si eseguono attività non banali. Potrebbero non sempre funzionare nel modo desiderato o nel modo in cui ci si aspetta, quindi è necessario sperimentare per scoprire quando è possibile/utilizzare questo componente.
Il problema principale con JFormattedTextField è che è ottimizzato per un caso d'uso raro, invece di uno comune, mentre manca un componente per l'attività comune. AWT è già abbastanza brutto, ma Swing, ancora una volta, è stato progettato da persone che non avevano la minima idea dello stato dell'arte nella programmazione della GUI, e facendo gli stessi errori due volte tanto male! Se i progettisti di Java e Swing avevano appena visto ciò che Delphi o NeXt's Interface Builder erano in grado di fare fin dai primi anni '90 e come lo hanno fatto, sia il linguaggio che Swing sarebbero stati molto più facili da usare! –