Campo JFotmattedTextField

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.

Alguém poderia me dar um help. Desde já agradeço.

Help…

Oi.
Como você está fazendo?

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.

Vou tentar…ou melhor eu até acho que eu já tentei…vou ver. Depois eu informo se funcionou. Obrigado.

Estou usando o código abaixo:

private void txtNrRecFedActionPerformed(java.awt.event.ActionEvent evt) {
if (optCNPJ.isSelected())
try{
fmtCNPJ = newMaskFormatter("##.###.###/####-##");
txtNrRecFed = new JFormattedTextField(fmtCNPJ);
}
catch(Exception e){}
}

Mudei o código para o seguinte:

public void itemStateChanged(ItemEvent evt){
if (evt.getSource()==optCNPJ) {
txtNrRecFed.requestFocus();
try{
fmtCNPJ = newMaskFormatter("##.###.###/####-##");
txtNrRecFed = new JFormattedTextField(fmtCNPJ);
}
catch(Exception e){}
}
}

E ainda não funciona.

Ainda não encontrei uma solução. Alguém poderia me ajudar.

[code]public void actionPerformed(ActionEvent ev) {

    if(ev.getSource() == radioCpf) {
        try {
            mask = new MaskFormatter("###.###.###-##");
        } catch(ParseException ex) { }
                    
    }
    if(ev.getSource() == radioCnpj) {
        try {
            mask = new MaskFormatter("##.###.###/####-##");
        } catch(ParseException ex) { }
                
    }
    
    field = new JFormattedTextField(mask);
    field.setBounds(20, 80, 120, 20);
    
    container.add(field);
    repaint();
    
    
}    [/code]

Acho que isso te ajuda.

Estou utilizando o Netbeans 6.1 e coloquei na aplicação o código que vc me passou com algumas alterações, conforme a seguir:

private MaskFormatter mask = null

private void txtNrRecFedActionPerformed(java.awt.event.ActionEvent evt) {
if(evt.getSource()==optCNPJ){
try{
mask = new MaskFormatter("##.###.###/####-##");
}catch(Exception e){}
}
if(evt.getSource()==optCPF){
try{
mask = new MaskFormatter("###.###.###-##");
}catch(Exception e){}
}
txtNrRecFed = new JFormattedTextField(mask);
container.add(txtNrRecFed);
repaint();
// TODO add your handling code here:
}

E ainda assim não funciona. Será que foram al alterações realizadas?

Estou utilizando o Netbeans 6.1 e coloquei na aplicação o código que vc me passou com algumas alterações, conforme a seguir:

[code]private MaskFormatter mask = null

private void txtNrRecFedActionPerformed(java.awt.event.ActionEvent evt) {
if(evt.getSource()==optCNPJ){
try{
mask = new MaskFormatter("##.###.###/####-##");
}catch(Exception e){}
}
if(evt.getSource()==optCPF){
try{
mask = new MaskFormatter("###.###.###-##");
}catch(Exception e){}
}
txtNrRecFed = new JFormattedTextField(mask);
container.add(txtNrRecFed);
repaint();
// TODO add your handling code here:
} [/code]

E ainda assim não funciona. Será que foram alterações realizadas?

Desde que me deparei com está dúvida tenho vasculhado a net atrás de uma solução e ainda não a encontrei. Alguém poderia me ajudar?

Tô subindo o tópico para ver se alguém me ajuda.

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??

Estou usando dois JRadioButtons. Talvez esse deve ser o motivo do não funcionamento do código. Vou pesquisar.

Ainda não consegui acertar o código com dois JRadioButton’s.

Sobe pra ver…

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){}

// TODO add your handling code here:[/code]