Criei uma máscara para um campo e aparentemente está funcionando normal. Mas caso eu insira um valor no campo e saia dele (dando tab, por exemplo) e depois eu volte no campo e apague o valor, quando eu saio dele novamente, ele retorna o valor que estava, não respeitando o fato do usuário ter deixado o campo em branco.
Segue abaixo como formatei o campo. Alguém sabe o motivo deste erro?
try { formato_cpf = new MaskFormatter ("###.###.###-##"); }
catch (Exception erro){
JOptionPane.showMessageDialog(null, “Não foi possível criar máscara para o campo CPF: " +
”\n\n" + erro);
}
jftf_cpf = new JFormattedTextField(formato_cpf);
É isso ai mesmo, particularmente odeio este tipo de campo, é uma porcaria. Vc vai precisar fazer gambiarra se quer que isso funcione.
Basicamente sempre que vc insere um valor inválido à mascara e sai do campo, ele volta ao último valor válido.
Neste caso vc vai precisar capturar o evento de sair do campo, verificar se está em branco, e setar NULL no VALOR (não no texto). +/- isso resolve.
o própio JTextField possui diversos métodos auxiliares, com o eclipse você pode dar uma olhada em todos que estão disponíves apenas botando um ponto " . " na instancia dele
formato_cpf.setValue(null);
ou
formato_cpf.setValue(" ");
Tu pode utilizar da técnica de STATES, criando uma class ‘ENUM’.
Tipo, eu aprendi isso no trampo, não sei nenhum material específico pra te indicar,
Mas da uma procurada no youtube e no google sobre Enum e States que isso vai te ajudar muito…