[RESOLVIDO]Problema Maskara

4 respostas
N

Boa Tarde Pessoal, estou fazendo um cadastro, e este cadastro tem dois radio buttons onde escolhe o tipo de pessoa que vc deseja cadastrar, Pessoa física ou jurídica, se o JFormattedTextField nao possuir nenhuma informação, ou seja, contiver apenas a mascara, eu seleciono o radio button que desejo e a mascara jah é alterada. Contudo se eu possuir o campo preenchido, a mascara nao aparece, o jFormattedtextField fica em branco e nao permite que eu digite nada.

a classe da Maskara de CPF é esta:

public class MascaraCPF {

    public static MaskFormatter validarMaskCpf() {
        MaskFormatter mask_cpf = null;
        try {
            mask_cpf = new MaskFormatter("###.###.###-##");
            mask_cpf.setPlaceholderCharacter('_');
        } catch (ParseException erro) {
        }
        return mask_cpf;
    }
}

A classe que Adiciona a mascara ao CNPJ é esta:

public class MascaraCnpj {

    public static MaskFormatter validarMaskCnpj() {
        MaskFormatter mask_cnpj = null;
        try {
            mask_cnpj = new MaskFormatter("##.###.###/####-##");
            mask_cnpj.setPlaceholderCharacter('_');
            return mask_cnpj;
        } catch (ParseException erro) {
        }
        return mask_cnpj;
    }

}

Eu chamo esta mascara no cadastro, mais precisamente no evento action do Radio Buttun:
para chamar o cpf utilizo esta linha:

tf_cpf_cnpj.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(MascaraCPF.validarMaskCpf()));

para chamar o cnpj utilizo esta linha:

tf_cpf_cnpj.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(MascaraCnpj.validarMaskCnpj()));

Gostaria de saber pq este erro esta ocorrendo.

Desde jah agradeço pela ajuda…

4 Respostas

Marck

Bom dia!

Voce tem que retirar a mascara atual antes de colocar uma nova e depois setar o valor como null:

formatText.setFormatterFactory(null);  
MaskFormatter format = new MaskFormatter("###.###.###-##");  
formatText.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(format));  
formatText.setValue(null);

Abraço!

N

Olá Marck,

Ja tentei fazer isso, até pensei que estivesse fazendo algo errado, pois utilizando esta linha, o problema persiste.

Se possuir alguma outra dica, agradeço…

Obrigado pela Ajuda

Marck

Boa tarde,

Cara, isso aqui eu testei e funciona com certeza pois é o código que tenho em uma tela de cadastro:

.....
    MaskFormatter mascaraCNPJ;
    MaskFormatter mascaraCPF;

    ///no construtor
    try
        {
            mascaraCNPJ = new MaskFormatter("###.###.###/####-##");
            mascaraCPF = new MaskFormatter("###.###.###-##");
        }catch(Exception e){e.printStackTrace();}


    //para alterar
    private void mudarMascara(boolean cnpj)
    {
        try{

            this.txtCnpjCpf.setValue(null);
            if(cnpj)
            {
                this.txtCnpjCpf.setFormatterFactory(new DefaultFormatterFactory(mascaraCNPJ));
            }
            else
            {
                this.txtCnpjCpf.setFormatterFactory(new DefaultFormatterFactory(mascaraCPF));
            }

        }catch(Exception pe)
        {
            pe.printStackTrace();
        }
    }

abraço!

N

Muitooo Obrigado Marck…

Criado 21 de dezembro de 2009
Ultima resposta 23 de dez. de 2009
Respostas 4
Participantes 2