Problema com textfield.decimal nokia E63 CLDC1.0

Pois eh galera, estou com problemas como já descrevi no título do tópico.

Tenho um textfiled na minha aplicação que deve aceitar decimais.

além de números, o campo aceita o sinal de menos(-), o ponto (.) e a vírgula (,).

Problema:

ao utilizar o ponto, o campo trava. exemplo:

se eu digito um numero qualquer no campo e em seguida um ponto, não consigo digitar outro numero e não consigo mover para o campo abaixo. Se digitar 2 pontos, um seguido do outro, nem apagar não posso mais!!

Alguém sabe por que isso acontece e tem alguma idéia de como resolver???

O próprio campo trata o sinal de menos e a virgula mas o ponto me quebrou.

procure por replace

Hum, pelo que entendi você quer que eu verifique quando é digitado um “.” e troque por “,” ou vazio certo?

Problema:

a cada entrada de dados no campo, verifico o char digitado. se for um ponto, mando imprimir na tela o código inteiro do char.
quando digito ponto e quando digito vírgula, ambos entram no método e imprimem o mesmo código de char.

já tentei fazer replace de . para , mas nada acontece

Obs: caso alguem pergunte, sei que a CLDC1.0 não suporta ponto flutuante, mas nao trato o valor como ponto flutuante no j2me, no j2me trato apenas como String.

Atualização do meu problema.

Descobri que o erro só ocorre quando o telefone está configurado usar idioma português, se mudar para inglês não há problema algum e nem preciso fazer tratamentos.

Duvida:

1-Tem como eu definir o idioma a ser utilizado em um campo? como? (melhor opção)

2-Se não for possível, tem como definir o idioma em que deve rodar meu aplicativo?

Estou olhando os inputModes do textBox na esperança de q a definição de um inputMode resolva meu problema, mas ainda estou meio perdido nisso.

Muito obrigado, qq sugestão é bem vinda!

Não há solução para nenhum dos dois casos.

Existe algum workaround para o meu problema?

Uma coisa que eu estava tentando fazer era tratar as entradas do campo a medida que o usuário digita. Pensei em colocar como initialInputMode para que o usuário possa digitar apenas valores numéricos e então cada vez que fosse detectada uma alteração no campo, verificava o que foi digitado e caso fosse algum caracter inválido, o mesmo seria apagado.

problemas com relação a isso:

1- se o idioma do aparelho for português, a vírgula funciona. Se for inglës, o ponto é que deveria funcionar, entao seria melhor saber o idioma que o telefone está configurado para funcionar antes de definir o que for remover (até penso em como não precisar saber disso, mas não gosto muito q alguns workarounds ficam meio “gambiosos”)

2-Maior problema, quando comecei a tratar as entradas do campo, estava funcionando bem, no entanto caso o usuário (de alguma forma bizarra) apertar 2 botões (digamos letras por exemplo) ao mesmo tempo, uma das letras não era apagada, mesmo que eu fizesse a verificação de toda a String.

3- Grande problema/dúvida, havia visto em algum tópico, se não me engano o boone dizendo (desculpe se estiver errado) que havia problemas em verificar quando algo é inserido no campo usando o ItemStateChanged. Sobre isso, não sei qual o problema e se há solução para isso, alguma sugestão???

Novamente obrigado por qualquer sugestão ou esclarecimento.

[quote=PsicoFeitan]Existe algum workaround para o meu problema?

Uma coisa que eu estava tentando fazer era tratar as entradas do campo a medida que o usuário digita. Pensei em colocar como initialInputMode para que o usuário possa digitar apenas valores numéricos e então cada vez que fosse detectada uma alteração no campo, verificava o que foi digitado e caso fosse algum caracter inválido, o mesmo seria apagado.

problemas com relação a isso:

1- se o idioma do aparelho for português, a vírgula funciona. Se for inglës, o ponto é que deveria funcionar, entao seria melhor saber o idioma que o telefone está configurado para funcionar antes de definir o que for remover (até penso em como não precisar saber disso, mas não gosto muito q alguns workarounds ficam meio “gambiosos”)
[/quote]
String locale = System.getProperty(“microedition.locale”);

Para ter controle ABSOLUTO da entrada, vc deve implementar seu próprio componente usando CustomItem ou Canvas. Orientação já dada aqui diversas vezes.
Não há como obter notificações de caracteres a medida que são digitados a não ser por estes meios.

[quote=PsicoFeitan]
3- Grande problema/dúvida, havia visto em algum tópico, se não me engano o boone dizendo (desculpe se estiver errado) que havia problemas em verificar quando algo é inserido no campo usando o ItemStateChanged. Sobre isso, não sei qual o problema e se há solução para isso, alguma sugestão???

Novamente obrigado por qualquer sugestão ou esclarecimento.[/quote]
ItemStateChanged não é garantido de ser disparado, portanto, a dica já dada no item 2 é a única solução que funciona 100% das vezes não importa o aparelho.È mais custosa, por ter que fazer o componente do zero ? Sim, mas pra quem tem a necessidade REAL, compensa.
Não posso reclamar do meu TextField customizado que só aceita Letras ou Números e ainda indica em que modo de entrada o componente está (icone indicativo).

Muito obrigado por todas as respostas boone, pretendo verificar a questão do CustomItem. Minhas últimas dúvidas pelo que li sobre CustomItem até agora.

A aparência do meu CustomItem é definida no método paint() certo?

Portanto, se eu testar em aparelhos diferentes, a aparência do CustomItem se manterá, enquanto os outros items do Form irão adquirir a aparência definida pelo aparelho certo?(Isso ficará estranho para o usuário, um campo com aparência especial e os outros “normais”)

O único jeito é fazer com que os outros items sejam CustomItems também para mantë-los com a mesma aparëncia? ou é possível fazer algo como herdar a aparência do textfield definida pelo aparelho?

[quote=PsicoFeitan]Muito obrigado por todas as respostas boone, pretendo verificar a questão do CustomItem. Minhas últimas dúvidas pelo que li sobre CustomItem até agora.

A aparência do meu CustomItem é definida no método paint() certo?
[/quote]
Certo.

Sim, a aparência se manterá pois vc é responsável pelo desenho do componente, não a implementação do fabricante.

[quote=PsicoFeitan]
O único jeito é fazer com que os outros items sejam CustomItems também para mantë-los com a mesma aparëncia? ou é possível fazer algo como herdar a aparência do textfield definida pelo aparelho?[/quote]
Não há herança de visual. Veja então q vc está numa situação antagônica. Se precisa da funcionalidade, deverá abrir mão do componente seguir o visual dos demais.Se quiser o visual, perderá a funcionalidade, pois usará um componente padrão.
Como diria uma célebre frase, não existe almoço grátis.

hehehe ok, mto obrigado pelos esclarecimentos.