MaskFormatter - Como alterar mascara de acordo com a escolha

Olá, estou com este problema que está consumindo muito meu tempo, acredito que seja algo simples de se resolver mas mesmo assim não consigo faze-lo funcionar como desejo. Quero alterar, mudar a mascara do JTextField de forma dinamica, de acordo a escolha, no caso existe RadioButtons para definer como vai ser a mascara (CPF ou CNPJ). Desde já agredeço quem puder me ajudar rapido.
public void fields() {

	JRadioButton rbCPF = new JRadioButton("CPF", true);
	JRadioButton rbCNPJ = new JRadioButton("CNPJ", false);
	
	ButtonGroup bg = new ButtonGroup();
	bg.add(rbCPF);
	bg.add(rbCNPJ);
	rbCPF.setBounds(20, 70, 50, 15);
	rbCNPJ.setBounds(20, 90, 60, 15);
	add(rbCNPJ);
	add(rbCPF);
	
	campoTipoCadastro = new JTextField();
	campoTipoCadastro.setBounds(20, 150, 200, 35);
	campoTipoCadastro.setEnabled(false);
		
	rbCPF.addActionListener(new ActionListener() {
		@Override
		public void actionPerformed(ActionEvent e) {
			System.out.println("actionperformedd cpf");
			campoTipoCadastro.setEnabled(true);
			MaskFormatter cpf;
			try {
				cpf =  new MaskFormatter("***.***.***-**");
				cpf.setValidCharacters("0123456789");
				campoTipoCadastro = new JFormattedTextField(cpf);
				System.out.println("actionperformedd cpfufufnu");
			}catch (ParseException ee) {}
			add(campoTipoCadastro);                
		}
	});
	rbCNPJ.addActionListener(new ActionListener() {
		@Override
		public void actionPerformed(ActionEvent e) {
			System.out.println("actionperformedd cnpj");
			campoTipoCadastro.setEnabled(true);
			MaskFormatter cnpj;
			try {
				cnpj = new MaskFormatter("***.***.***/****-**");
				cnpj.setValidCharacters("0123456789");
				campoTipoCadastro = new JFormattedTextField(cnpj);
			} catch (ParseException e1) {}
			add(campoTipoCadastro);                
		}
	});
	add(campoTipoCadastro);        
   }
private String format(String type) {
    switch(type) {
        case "CNPJ":
            return "**.***.***/****-**";
        default:
             return "***.***.***-**";
    }
}

Nesse meu contexto, onde esse metodo se encaixaria?

Ao invés disso

cpf =  new MaskFormatter("***.***.***-**");

Usa isso

cpf = new MaskFormatter(format("CPF"));

ou

cpf = new MaskFormatter(format("CNPJ"));

Entendi, mas não apareceu a mascara ainda…

public void fields() {
	
	OuvinteExternoDeFoco ouvinteDeFoco = new OuvinteExternoDeFoco();
	campoNome = new TextFieldPadrao(350, 70, 250, 35);
	add(campoNome);

	JRadioButton rbCPF = new JRadioButton("CPF", false);
	JRadioButton rbCNPJ = new JRadioButton("CNPJ", false);
	
	ButtonGroup bg = new ButtonGroup();
	bg.add(rbCPF);
	bg.add(rbCNPJ);
	rbCPF.setBounds(20, 70, 50, 15);
	rbCNPJ.setBounds(20, 90, 60, 15);
	add(rbCNPJ);
	add(rbCPF);
	
	campoTipoCadastro = new JTextField();
	campoTipoCadastro.setBounds(20, 150, 200, 35);
	campoTipoCadastro.setEnabled(false);
		
	rbCPF.addActionListener(new ActionListener() {
		@Override
		public void actionPerformed(ActionEvent e) {
			campoTipoCadastro.setEnabled(true);
			MaskFormatter cpf;
			try {
				cpf =  new MaskFormatter(format("CPF"));
				cpf.setValidCharacters("0123456789");
				campoTipoCadastro = new JFormattedTextField(cpf);
			}catch (ParseException ee) {}
			add(campoTipoCadastro);                
		}
	});
	rbCNPJ.addActionListener(new ActionListener() {
		@Override
		public void actionPerformed(ActionEvent e) {
			campoTipoCadastro.setEnabled(true);
			MaskFormatter cnpj;
			try {
				cnpj = new MaskFormatter(format("CNPJ"));
				cnpj.setValidCharacters("0123456789");
				campoTipoCadastro = new JFormattedTextField(cnpj);
			} catch (ParseException e1) {}
			add(campoTipoCadastro);                
		}
	});
	add(campoTipoCadastro);                
	
	try {
		MaskFormatter telefone = new MaskFormatter("(**) * ****-****");
		telefone.setValidCharacters("0123456789");		
		campoTelefone = new JFormattedTextField(telefone);
		campoTelefone.setBounds(350, 150, 140, 35);
		campoTelefone.addFocusListener(ouvinteDeFoco);
	}catch (ParseException e2) {}
	add(campoTelefone);
				
	campoCidade = new TextFieldPadrao(20, 230, 250, 35);
	add(campoCidade);
	campoRua = new TextFieldPadrao(350, 230, 250, 35);
	add(campoRua);
	campoNumero = new TextFieldPadrao(650, 230, 50, 35);
	add(campoNumero);
	campoBairro = new TextFieldPadrao(20, 310, 250, 35);
	add(campoBairro);
	
}

private String format(String type) {
    switch(type) {
        case "CNPJ":
            return "**.***.***/****-**";
        default:
             return "***.***.***-**";
    }
}