jTextField único com duas máscaras possíveis

Olá, estou tentando fazer uma cadastro de clientes para uma casa de eventos.
Porém estou tentando usar um único jTextField para armazenar CPF ou CNPJ.
O gatilho para a mudança é a seleção do RadioButton. Um para marcar pessoa Física, outro para marcar pessoa Jurídica.
E a máscara não está sendo atualizada.

Estou aprendendo Java por conta própria, e ainda existe muita coisa que não entendo como funciona.
Espero que possam me ajudar.

[code]public void AtualizaCPF(){
LbDocumento.setText(“CPF:”);
try{
mascara_documento.setMask("###.###.###-##");
mascara_documento.setValidCharacters(“0123456789”);
}
catch(ParseException erro) {}
JFormattedTextField Documento = new JFormattedTextField(mascara_documento);
RBtnFisica.setSelected(true);
RBtnJuridica.setSelected(false);
}
public void AtualizaCNPJ(){
LbDocumento.setText(“CNPJ:”);
try{
mascara_documento.setMask("##.###.###/####-##");
mascara_documento.setValidCharacters(“0123456789”);
}
catch(ParseException erro) {}
JFormattedTextField Documento = new JFormattedTextField(mascara_documento);
RBtnJuridica.setSelected(true);
RBtnFisica.setSelected(false);
}

TfDocumento = new JFormattedTextField(mascara_documento); //Código inserido no Pós Criação do textField.

[/code]

Resolvo este problema com o seguinte método:

private void atualizaCampos() {
        if (radioPj.isSelected()) {
            labelNome.setText("Nome Razão:");
            labelApelido.setText("Nome Fantasia:");
            labelCpfCnpj.setText("CNPJ:");
            textCpfCnpj.setText("");
            try {
                textCpfCnpj.setFormatterFactory(new DefaultFormatterFactory(new MaskFormatter("##.###.###/####-##")));
            } catch (ParseException ex) {
                Logger.getLogger(CECliente.class.getName()).log(Level.SEVERE, null, ex);
            }
            labelRg.setEnabled(false);
            textRg.setEnabled(false);
            labelNasc.setText("Fundação:");
        } else {
            labelNome.setText("Nome:");
            labelApelido.setText("Apelido:");
            labelCpfCnpj.setText("CPF:");
            textCpfCnpj.setText("");
            try {
                textCpfCnpj.setFormatterFactory(new DefaultFormatterFactory(new MaskFormatter("###.###.###-##")));
            } catch (ParseException ex) {
                Logger.getLogger(CECliente.class.getName()).log(Level.SEVERE, null, ex);
            }
            labelRg.setEnabled(true);
            textRg.setEnabled(true);
            labelNasc.setText("Nascimento:");
        }
    }

Veja que eu verifico o radioPJ, que possui true para pessoa jurídica e false para física. Conforme estiver marcado, o método é executado e as máscaras são setadas!

Esqueci de uma coisa, os eventos dos radio buttom:

    private void radioPjActionPerformed(java.awt.event.ActionEvent evt) {
        atualizaCampos();
    }
    
    private void radioPfActionPerformed(java.awt.event.ActionEvent evt) {
        atualizaCampos();
    }

Obrigado pela ajuda, assim que conseguir implementar retorno para dizer se deu tudo certo!