Mask em TextField [SOLUCIONADO]

9 respostas
wln1987

Olá galera, blz?

Estou precisando fazer uma mascara em um textfield, deste jeito:

Tenho um textfield com preço no seguinte formato 0.00

Assim a pessoa vai digitando os valores e vai alimentando o textfield apenas com numeros, mantendo o ponto da formatacao (semelhante aos caixas eletronicos, campo de valores).

Exemplo:

Carrega: 0.00
Aperta 1, aparece: 0.01
Aperta 5, aparece: 0.15
Aperta 6, aparece: 1.56
Aperta 7, aparece: 15.67

E assim vai :stuck_out_tongue:

Quem souber fazer essa mascara em J2ME e/ou poder me dar uma luz eu agradeço.

9 Respostas

psandrelli
JFormattedTextField txt = new JFormattedTextField();
try {
	MaskFormatter formatter = new MaskFormatter("##.##");
	formatter.install(txt);
  } catch (Exception e) {
		// TODO: handle exception
}
wln1987

JFormattedTextField? Que classe é essa?

To trampando com J2ME… :slight_smile:

psandrelli

Deve ter uma parecida, a lógica é a mesma.

wln1987

bom galera, eu fiz na mao mesmo, depois de procurar por algum tempo… se alguem tiver uma solucao mais pratica me avisa :wink:

if(item == get_maskedPriceField()) {
            /* Formata a mascara de preco #.## */
            String price = get_maskedPriceField().getString();
            StringBuffer priceStrBuffer = new StringBuffer();
            /* remove o ponto e vai dando append no buffer */
            for(int i = 0; i < price.length(); i++) {
                if(price.charAt(i) != '.') {
                    priceStrBuffer.append(price.charAt(i));
                }
            }
            price = null;
            /* Remove os zeros da mascara para formata-la adequadamente */
            while(priceStrBuffer.length() > 0) {
                if(priceStrBuffer.charAt(0) == '0') {
                    priceStrBuffer.deleteCharAt(0);
                } else {
                    /* Desta forma pode ser feita a comparacao entre chars acima */
                    break;
                }
            }
            /* Arruma a formatacao para o padrao #.## */
            if(priceStrBuffer.length() == 0) {
                priceStrBuffer.append("0.00");
            } else if (priceStrBuffer.length() == 1) {
                priceStrBuffer.insert(0,"0.0");
            } else if (priceStrBuffer.length() == 2) {
                priceStrBuffer.insert(0,"0.");
            } else {
                priceStrBuffer.insert(priceStrBuffer.length() - 2, ".");
            }
            /* volta para o textfield*/
            get_maskedPriceField().setString(priceStrBuffer.toString());
            priceStrBuffer = null;
            
}

Esse get_masked retorna o textfield que eu to usando no momento, esse if vai no itemStateChanged(Item item)
Eu to usando j2mepolish pra formatacoes, se alguem tiver interesse em aprender um pouco de polish me avisa ai.

Abracos!

fabianofrizzo

Cara eu tenho interese em usar o Polish…

Com qual IDE vc utiliza ele.

Ele é bom mesmo facilita a programação???

Muito Obrigado pela sua atenção

fabim

Conselho: esquece JFormattedTextField. Dao muito trabalho e sempre buga.

Utilize InputVerifiers. Procure no Google sobre eles.

J

Dae passoal, alguem sabe como fazer uma mascara para TextField do tipo XXX0000.

pablomaiden

Galera gostaria de fazer uma mascara para trabalhar com valores monetarios (Reais), a medida que o usuário
for digitando os valores o sistema já vai montando.

P

Desenhe o seu próprio componente usando CustomItem e seja feliz.

Dá um trabalho legal mas funciona.

Se vc tiver mesmo precisando, tenho certeza que fará.

Criado 14 de janeiro de 2008
Ultima resposta 18 de abr. de 2011
Respostas 9
Participantes 7