JFormattedField!

2 respostas
K

Boa noite, estou tendo alguns problemas nesse código ;T

txtPesquisa.setText(null);
        MaskFormatter mf = new MaskFormatter();

        try {
            if (cboPesquisa.getSelectedIndex() == 0) {
                mf.setPlaceholderCharacter(' ');
            } else if (cboPesquisa.getSelectedIndex() == 1) {
                mf.setMask("##.###.###-A");
                mf.setPlaceholderCharacter(' ');
            } else if (cboPesquisa.getSelectedIndex() == 2) {
                mf.setMask("##/##/####");
                mf.setPlaceholderCharacter(' ');
            }
            
            mf.install(txtPesquisa);
        } catch (ParseException ex) {
            Logger.getLogger(Pesquisa.class.getName()).log(Level.SEVERE, null, ex);
        }

A idéia é atribuir uma nova máscara toda vez que eu mudar o item do combobox (opções: nome, rg e dia), porém ele funciona apenas na primeira vez q eu uso ele. Quando mudo o item novamente, ele simplesmente não faz nada.
Alguem consegue solucionar meu problema? ;x

2 Respostas

M

Pode ser que você tenha que zerar o valor antes de trocar a máscara. Tente colocar a seguinte linha logo antes de usar o setMask:

mf.setValue(null);
K

Consegui resolver o problema, na verdade o

MaskFormatter mf = new MaskFormatter();

tem que ficar fora do evento, ficando:

MaskFormatter mf = new MaskFormatter();
     
    private void cboPesquisaItemStateChanged(java.awt.event.ItemEvent evt) {                                             
       

        try {
            if (cboPesquisa.getSelectedIndex() == 0) {
                mf.setPlaceholderCharacter(' ');
                mf.install(txtPesquisa);
            } else if (cboPesquisa.getSelectedIndex() == 1) {
                mf.setMask("##.###.###-A");
                mf.setPlaceholderCharacter(' ');
                mf.install(txtPesquisa);
            } else if (cboPesquisa.getSelectedIndex() == 2) {
                mf.setMask("##/##/####");
                mf.setPlaceholderCharacter(' ');
                mf.install(txtPesquisa);
            }
        } catch (ParseException ex) {
            Logger.getLogger(Pesquisa.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

Obrigado pelas informações! Tenho certeza que serão úteis futuramente!

Criado 8 de janeiro de 2010
Ultima resposta 8 de jan. de 2010
Respostas 2
Participantes 2