Ich gebe zu, JFormattedTextField ist nicht die einfachste Klasse zu verwenden, und ja, es hat Probleme, aber wie die meisten Komponenten macht es einen vernünftigen Job bei einigen Dingen und einen schlechten Job bei anderen.
Es ermöglicht Ihnen tatsächlich, für Integer-Werte zu bearbeiten, wie die Daten eingegeben werden, wenn Sie einen MaskFormatter verwenden. Für einfache Aufgaben kann es also effektiv sein.
Die Bearbeitung von Daten ist eine komplexe Aufgabe. Manchmal müssen Sie die Daten so bearbeiten, wie sie eingegeben werden (wenn Sie nach Integer-Werten suchen). Manchmal müssen Sie die Daten nach der Eingabe bearbeiten (im Fall der Validierung eines Datums). Dann müssen Sie natürlich entscheiden, wie mit ungültigen Daten umgegangen wird.
Bei nicht-trivialen Aufgaben kann die Konfiguration der Parameter in gewissem Umfang erfolgen. Sie funktionieren möglicherweise nicht immer so, wie Sie es möchten oder wie Sie es erwarten, also müssen Sie experimentieren, um herauszufinden, wann Sie diese Komponente verwenden können/sollten.
Das Hauptproblem von JFormattedTextField besteht darin, dass es für einen seltenen Anwendungsfall anstelle eines allgemeinen Anwendungsfalls optimiert ist, während eine Komponente für die allgemeine Aufgabe fehlt. AWT ist schlimm genug, aber Swing wurde wiederum von Leuten entworfen, die keine Ahnung vom Stand der Technik in der GUI-Programmierung hatten und die gleichen Fehler zweimal machen, wirklich schlimm! Wenn die Designer von Java und Swing sich nur angeschaut hätten, was Delphi oder NeXt's Interface Builder seit Anfang der 90er Jahre konnten und wie sie es gemacht haben, wären sowohl die Sprache als auch Swing viel einfacher zu benutzen! –