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.
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.
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.
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.