Please help before I have to resort to subclass'n JTextField and overriding paint()
This is actually fairly difficult to do with swing. Even though you don't prefer it, I think your best bet is to override PasswordView. (It may be easier to override FieldView, which is PasswordView's superclass.)
If you like TableCellRenderer you can use a one-cell table instead of a text field, but it doesn't buy you anything if you need the cell editor to obscure the number also.
I don't see how JFormattedTextField helps you any. It's not set up to have an actual value that can't be completely determined from the displayed value.