E eu só quero alterar a mascara de uma String, mais nada![RESOLVIDO]

5 respostas
F

Pessoal, ja procurei aqui no forum mas realmente não achei exatamente o que preciso
só quero pegar uma String, e colocar uma mascara nela. apenas isso
olha como esta o codigo:

public void adicionarInfoComboBoxComMascara(String nome, String mascara, Object...objetos)
    {
        MaskFormatter mask = Ajudante.getMascara(mascara);
        JPanel p = this.getPainelNomeValor();
        p.add(new JLabel(nome+":"));
        JComboBox lista = new JComboBox();
        for(Object objeto : objetos)
        {
            try
            {
//aqui esta o problema
                lista.addItem(mask.valueToString(objeto));
            }
            catch (ParseException ex)
            {
                lista.addItem(objeto);
            }
        }
        p.add(lista);
        this.painelDeInfos.add(p);

    }

e eu recebo uma bela de uma:

java.text.ParseException: Invalid character: 9
        at javax.swing.text.MaskFormatter$MaskCharacter.append(MaskFormatter.java:859)
        at javax.swing.text.MaskFormatter.append(MaskFormatter.java:475)
        at javax.swing.text.MaskFormatter.valueToString(MaskFormatter.java:375)
        at premiummanagerv2.grafica.TelaDeDetalhes.adicionarInfoComboBoxComMascara(TelaDeDetalhes.java:166)
        at TelaDeCadastroTestDrive.main(TelaDeCadastroTestDrive.java:67)

wtf?

5 Respostas

F

ahh o meu Ajudante retorna um MaskFormatter

public static MaskFormatter getMascara(String mask) { MaskFormatter mascara = new MaskFormatter(); try { mascara.setMask(mask); } catch (Exception ex) { ex.printStackTrace(); } return mascara; }

F

Quais são os parametros que vc esta passando?

De qual mascara para qual mascara vc quer converter? e qual a string?

F
detalhes.adicionarInfoComboBoxComMascara("Telefone", "(##) ####-####", "[telefone removido]", "[telefone removido]");

é uma String sem mascara normal passado como objeto para o método...
ele da erro no primeiro simbolo que encontra da mascara falando invalid character

exemplo
nessa chamada acima ele da erro para invalid character 1

quando coloquei
detalhes.adicionarInfoComboBoxComMascara("Telefone", "##-####-####", "[telefone removido]", "[telefone removido]");
ele deu invalid character 9 entendeu? n sei pq isso

eu acho q eh esse método mask.valueToString que nao ta legal

F

foi so colocar uma coisa a mais antes do ValueToString
isso:

J

Olha isso enche a paciência passei um tempinho para conseguir enteder como fazer isso, o caso que vc pode criar um JFormattedTextField más não precisa fazer ele apararecer só usar ele para fazer a convenção por exemplo:

A classe
public class MascaraClasse {

public void transMascara(String mascara, String info){// qual mascara vc quer usar qual informação vc quer
try{
      MaskFormatter masc = new MaskFormatter();//cria a mascara

    if (mascara.equals("d")){

    masc.setMask("##/##/####");// seta a mascara pra data
    masc.setPlaceholderCharacter('_');
    JFormattedTextField jFTdados = new JFormattedTextField(masc);// cria um objeto JFTF para transformar o texto
        jFTdados.setText(info);
        System.out.println(jFTdados.getText());//o resultado assim vc pode passar o metodo de void para String

    } else if (mascara.equals("f")){
    masc.setMask("(##)####-####");// seta mascara telefone
    masc.setPlaceholderCharacter('?');
    JFormattedTextField jFTdados = new JFormattedTextField(masc);// cria um objeto JFTF para transformar o texto
    jFTdados.setText(info);
    System.out.println(jFTdados.getText());//o resultado assim vc pode passar o metodo de void para String

    
    }
}

catch(ParseException e) {

JOptionPane.showMessageDialog(null,“Erro no formato”,“alerta”,JOptionPane.ERROR_MESSAGE);

}
}

}
Claro que para obter retorno vc deve transformar a classe em String e guardar dentro da variavel, fora criar o objeto para chamar a classe e passar os parametros, isso é apenas um exemplo más fuciona que é uma beleza!!

Criado 7 de janeiro de 2010
Ultima resposta 9 de out. de 2010
Respostas 5
Participantes 3