mdtorbis, também tive problema na utilização de campos com mascara no swing.
Cheguei a conclusão que não funciona para as necessidades reais.
Agora todo campo ‘mascara’ que preciso faço a validacao na saida do campo e depois formato.
Por exemplo:
O meu campo data aceita: “210205”, “21022005”, “21-02-2005”, “21-02-05”, “21/02/05”, “21/02/2005”, “hoje”
Digitando qualquer um destes valores, o campo aceitará a informação e na saida formatará como 21/02/2005.
isso eu consigo graças um arquivo .propertires que mantenho junto com o campo nao qual armazeno EXPRESSAO_REGULAR=FORMATADO.
Por exemplo:
[0-9]{1,2}[/][0-9]{1,2}[/][0-9]{2}=dd/MM/yy
[0-9]{1,2}[/][0-9]{1,2}[/][0-9]{4}=dd/MM/yyyy
[0-9]{1,2}[-][0-9]{1,2}[-][0-9]{2}=dd’-‘MM’-‘yy
[0-9]{1,2}[-][0-9]{1,2}[-][0-9]{4}=dd’-‘MM’-'yyyy
[0-9]{6}=ddMMyy
[0-9]{8}=ddMMyyyy
Com a expressao regular eu testo qual o formato está sendo utilizado, depois com o formato consigo fazer um parse no que foi digitado, transformar para Date e formatar novamente com o formato padrao do campo dd/MM/yyyy para jogar no setText().
Esta tecnica pode ser aplicada para qualquer valor com formato variavel que se conheça, como Hora, CNPJ, Data, Email etc…
abraços, Décio