FormattedTextField dinâmico

Fala galera, tenho um formattedTextField, e tenho um combobox com as opções, CPF e Nome. Caso o usuário marque a opção cpf, queria que ele utilizasse o formato “###.###.###-##”, caso marque nome, o textfield voltaria a ficar em branco.

Já fiz a validação no código, mas creio que falta um método que faça com que o JFrame seja atualizado.

Alguém poderia me ajudar?

[code]String S = (String) combo.getSelectedItem();

				if (S == "Nome") {
					memo.append(impressora.buscaNomeCliente(edt.getText()));
					
					
				}
				if (S == "CPF"){
					memo.append(impressora.buscaCpfCliente(edt.getText()));
					
					try {
						MaskFormatter mf = new MaskFormatter("###.###.###-##");
						mf.setPlaceholderCharacter('_');
						edt = new JFormattedTextField(mf);
						
						

					} catch (ParseException ex) {
						JOptionPane.showMessageDialog(null,
								"Formato do campo deve ser XXX.XXX.XXX-XX", "alerta",
								JOptionPane.ERROR_MESSAGE);
					}[/code]

Acho que assim vai dar…

Você já verifica qual opção foi selecionada (nome ou cpf).

MaskFormatter mf = new MaskFormatter();
JFormattedTextField tf = new JFormattedTextField(mf);
tf.setFocusLostBehavior(JFormattedTextField.COMMIT);

if (cpf) {
   mf.setMask("###.###.###-##");
   tf.setValue(""); //Limpa o TextField    
} else { 
   mf.setMask("**************") // cada * corresponde a um caracter
   tf.setValue("");
}

No else, eu não sei se existe alguma solução que permita deixar a máscara com um número ilimitado de caracteres, já que o MaskFormatter trabalha com uma String como parâmetro, e não com uma expressão regular (que deixaria o componente bem mais utilizável…)

Nesse caso, eu sugeriria dar uma olhada nesse tópico, onde um colega sugere utilizar DocumentFilter ao invés de MaskFormatter…

http://www.guj.com.br/posts/list/29543.java

Té mais o/