Problemas com MaskFormatter

7 respostas
neto.fiamenghi

Eu tenho um JFormattedTextField que será usado para CPF ou CNPF dependendo do tipo de cadastro (Física ou Jurídica), então criei dois métodos, um que formata CPF e outro CNPJ:

public MaskFormatter maskCPF(JFormattedTextField jftf) {
        MaskFormatter maskCPF = null;
        try{
            maskCPF = new MaskFormatter("###.###.###-##");
            maskCPF.install(jftf);
        }catch(ParseException ex){
            Logger.getLogger(cadCliente.class.getName()).log(Level.SEVERE, null, ex);
        }

        return maskCPF;
    }

    public MaskFormatter maskCNPJ(JFormattedTextField jftf) {
        MaskFormatter maskCNPJ = null;
        try{
            maskCNPJ = new MaskFormatter("##.###.###-##");
            maskCNPJ.install(jftf);
        }catch(ParseException ex){
            Logger.getLogger(cadCliente.class.getName()).log(Level.SEVERE, null, ex);
        }

        return maskCNPJ;
    }

e chamo eles no action do JRadionButton:

private void rbFisicaActionPerformed(java.awt.event.ActionEvent evt) {
mascaras.maskCPF(edtCPF);

no caso do CPF dá certo, mas no CNPJ o campo não deixa inserir nenhum caracter, o que pode ser?

7 Respostas

jcgmarlboro

tente assim, implemente eles nos radiobutton:

// Cliente Físico
try {
   SEUJFORMATTEDTEXTFIELD.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.MaskFormatter("###.###.###-##")));
}catch(Exception e){
   System.out.println("Erro = "+e);
}

// Cliente Jurídico
try {
   SEUJFORMATTEDTEXTFIELD.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.MaskFormatter("##.###.###/####-##")));
}catch(Exception e){
   System.out.println("Erro = "+e);
}
jcgmarlboro

Bom agora gostaria de uma ajuda do pessoal, tenho 2 radiobutton, um para Cliente Fisico, outro para Cliente Juridico, pois bem, quando selecionado um ele seta a mascara pra um jformattedtext, até ai sem problemas, pois bem quando digito um cnpj realizo a busca perfeito, só que quando seleciono um Cliente Fisico que eu tenho que setar uma mascara de cpf, simplesmente o jformattedtext fica em branco e não consigo inserir, e quando volto pra Cliente Juridico o ultimo cnpj esta lá, gostaria de saber como dar um flush ou algo parecido.

Obrigado.

neto.fiamenghi

jcgmarlboro:
Bom agora gostaria de uma ajuda do pessoal, tenho 2 radiobutton, um para Cliente Fisico, outro para Cliente Juridico, pois bem, quando selecionado um ele seta a mascara pra um jformattedtext, até ai sem problemas, pois bem quando digito um cnpj realizo a busca perfeito, só que quando seleciono um Cliente Fisico que eu tenho que setar uma mascara de cpf, simplesmente o jformattedtext fica em branco e não consigo inserir, e quando volto pra Cliente Juridico o ultimo cnpj esta lá, gostaria de saber como dar um flush ou algo parecido.

Obrigado.

jcgmarlboro o meu problema é justamente esse que voce está enfrentando, se conseguir algo me avise…valeww

V

E ai pessoal…

consegui resolver tendo um MaskFormatter vazio, dai toda vez antes de setar a mascara definitiva seto ele

JFormattedTextField field = new JFormattedTextField();

MaskFormatter blankMask = new MaskFormatter();
blankMask.install(field);

field.setText("");

MaskFormatter cpfMask = new MaskFormatter("###.###.###-##");
cpfMask.install(field);
jcgmarlboro

Bom, pesquisei muito esta noite, mas até agora não encontrei uma solução definitiva…

Para um JFormattedTextField, a validação é controlada pela propriedade focusLostBehavior.
Isso pode ser definido como um dos quatro valores:

COMMIT_OR_REVERT: Este é o padrão. Quando o componente perde o foco, o componente automaticamente chama o CommitEdit () method. Isto irá analisar o conteúdo do componente e jogue um ParseException em caso de erro, revertendo o conteúdo para o valor mais recente válido.
COMMIT: Esta definição é semelhante à COMMIT_OR_REVERT, mas deixa o conteúdo inválido dentro do campo, permitindo ao usuário modificar a configuração.
Revert: Esta configuração sempre reverte o valor.
PERSIST: Esta configuração não faz nada. Você deve manualmente chamada CommitEdit () a si mesmo para ver se o conteúdo é válido antes de utilizar o conteúdo.

fonte: http://www.java2s.com/Tutorial/Java/0240__Swing/JFormattedTextFieldfocuslostbehaviour.htm

jcgmarlboro

vdb:
E ai pessoal…

consegui resolver tendo um MaskFormatter vazio, dai toda vez antes de setar a mascara definitiva seto ele

VDB tentei a forma que tu nos passou, mas não deu certo.

neto.fiamenghi

jcgmarlboro:
vdb:
E ai pessoal…

consegui resolver tendo um MaskFormatter vazio, dai toda vez antes de setar a mascara definitiva seto ele

VDB tentei a forma que tu nos passou, mas não deu certo.

Também não consegui…se mais alguém puder nos ajudar…

Criado 7 de março de 2010
Ultima resposta 10 de mar. de 2010
Respostas 7
Participantes 3