Erro ao mudar a máscara de um campo JFormattedTextField

Pessoal, estou com um problema. Estou desenvolvendo uma tela para cadastro de Clientes e tenho 2 campos que serão formatados condicionalmente (CPF/CNPJ e Telefone Fixo/Celular).
Para isso criei 2 ComboBox e a máscara de cada um destes campos antes de ser aplicada deverá fazer a verificação da ComboBox.

Para isso criei um evento de FocusGained em cada campo, para aplicar a máscara assim que o cursor for posicionado. Escrevi o código e inicialmente está funcionando tudo certinho, mas descobri um Bug que estou “quebrando a cabeça” para resolver, mas até agora não consegui nada, por isso estou pedindo para alguma “mente iluminada” que possa me ajudar… rsrsrsrs

O Bug é o seguinte, quando o campo recebe o foco pela primeira vez a máscara funciona, porém, se ele perde o foco e depois ganha novamente mas com o ComboBox selecionado para aplicar a outra máscara o Java retorna um erro de Out of Bounds.

Segue abaixo os códigos:

//Criação das variaveis para a máscara
DefaultFormatterFactory maskTel;
DefaultFormatterFactory maskCel;
DefaultFormatterFactory maskCPF;
DefaultFormatterFactory maskCNPJ;

//Definição das máscaras
this.maskTel = new DefaultFormatterFactory(new javax.swing.text.MaskFormatter("(##)####-####"));
this.maskCel = new DefaultFormatterFactory(new javax.swing.text.MaskFormatter("(##)#####-####"));
this.maskCPF = new DefaultFormatterFactory(new javax.swing.text.MaskFormatter("###.###.###-##"));
this.maskCNPJ = new DefaultFormatterFactory(new javax.swing.text.MaskFormatter("##.###.###/####-##"));

//Evento de FocusGained

ftf_CpfCnpj.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(java.awt.event.FocusEvent evt) {
        if(cb_TipoPessoa.getSelectedIndex() == 0){
            ftf_CpfCnpj.setFormatterFactory(this.maskCPF);
        }else{
            ftf_CpfCnpj.setFormatterFactory(this.maskCNPJ);
        }
            }
        });

ftf_Telefone.addFocusListener(new java.awt.event.FocusAdapter() {
    public void focusGained(java.awt.event.FocusEvent evt) {  
        if(cb_TipoTelefone.getSelectedIndex() == 0){
           ftf_Telefone.setFormatterFactory(this.maskTel);
        }else{
           ftf_Telefone.setFormatterFactory(this.maskCel);
        }
    }
});

Se alguém puder me ajudar agradeço muito…

Já tentou algo dessa forma?

String maskCPF = ###.###.###-##;
MaskFormatter mf = new MaskFormatter(maskCPF);
ftf_CpfCnpj.setFormatterFactory(new DefaultFormatterFactory(mf));
mf.setPlaceholderCharacter(' ');
mf.install(ftf_CpfCnpj);

Caramba Jonhathan_Medeiros você é o cara!.. kkkk

Deu super certo… Muito obrigado pela dica.

Valeu…