Num frame coloquei dois botões pertencentes ao mesmo grupo (CNPJ e CPF). Já pesquisei bastante e ainda não descobri como fazer para, ao abandonar o botão escolhidos e pasar o foco para um Campo JFotmattedTextField, o mesmo receba a máscara “##.###.###/####-##” para CNPJ ou ###.###.###-## para CPF.
Eu sempre setei a máscara na hora me que eu crio a MaskFormatter. Não entendi muito bem, mas dependendo de qual botão for clicado, você cria a máscara de um jeito diferente (dentro dos métodos ActionPerformed mesmo).
Quando criei o campo no netBeans 6.1 não formatei nenhuma máscara pelo fato de não saber se o usuário iria optar pelo CNPJ ou pelo CPF, por isso que gostaria de criar tal máscara pelo código, quando o campo ganhasse foco.
Oi.
Pois então. Quando o foco for no campo do CNPJ, você cria uma mascará com o jeitão do CNPJ. Ou ainda, como isso vai ser bastante utilizado, acho que você já pode criar duas máscaras diferentes. Aí quando o foco for no campo do CNPJ, você faz assim:
campoCNPJ.setFormatterFactory(maskCNPJ);
Eu não sei direito, mas acredito que seja o método que falei.
Abraço.
Cara, como você diferencia CNPJ de CPF?? São 2 botões diferentes?? Ou são 2 RadioButtons?
Se forem 2 Radios, tem um método específico para identificar a seleção deles, que não é o getSource(). Agora, se estiver usando JButtons, não visualizo nada errado no seu código e to sem Java aqui pra compilar. Não da pra detalhar pra gente o que ta acontecendo??
Então cara, você não pode usar o getSource(), você tem que usar o método que verifica se o RadioButton está selecionado… Não to com Java aqui e to com preguiça de procurar na API, mas é só abrir o seu Eclipse ou NetBeans e pressionar CTRL+SPACE depois de digitar o componente…
Mudei o código conforme a seguir para o JRadioButton fosse selecionado, transferisse o foco para o JFormattedTextField txtNrRecFed, mas ainda não está funcionando. Alguém tem uma sugestão?
[code]private void optCNPJActionPerformed(java.awt.event.ActionEvent evt) {
if(optCNPJ.isSelected()==true)
txtNrRecFed.requestFocus();
try{
mask = new MaskFormatter("##.###.###/####-##");
txtNrRecFed = new JFormattedTextField(mask);
}catch(ParseException e){}