Formatar Campo Preço Independente do Locale ?  XML
Índice dos Fóruns » Interface Gráfica
Autor Mensagem
fsfnit
Java Ninja
[Avatar]

Membro desde: 16/05/2006 13:38:27
Mensagens: 283
Localização: Far Far Away - Niterói / RJ
Offline

Pessoal, como formato um campo de preço independente do Locale do SO e que a quantidade de casas decimais (pós virgula) seja passada por parametro ?
Eu fiz esse método, porém estou com problemas com locale.

Pois no meu método testo se tem "," e coloco 0 na frente, ou atrás quando o campo perde o foco.

Alguem tem alguma susgestão ?
alevi
JavaChild
[Avatar]

Membro desde: 27/01/2007 13:58:04
Mensagens: 145
Offline

Olá!

Já tentou expressões regulares?

http://www.walkersystems.com.br

SCJP
gomesrod
GUJ Ranger
[Avatar]

Membro desde: 11/05/2007 19:46:22
Mensagens: 901
Offline

Como é que você está fazendo essa formatação?
Se estiver usando NumberFormat e outras classes da API do Java você pode "forçar" um Locale fixo, e também consegue passar a quantidade de casas decimais.
thiago.correa
GUJ Master
[Avatar]

Membro desde: 26/03/2006 18:54:30
Mensagens: 1861
Offline

Dá uma olhada nesse tópico
http://www.guj.com.br/posts/preList/119040/699886.java#699886

This message was edited 1 time. Last update was at 06/07/2009 13:10:34


---
"Se não puder ajudar, atrapalhe, afinal de contas o importante é participar!"
Thiago
[MSN]
fsfnit
Java Ninja
[Avatar]

Membro desde: 16/05/2006 13:38:27
Mensagens: 283
Localização: Far Far Away - Niterói / RJ
Offline

Estou fazendo assim:

[code]

public static String formatValue (String numero, int digits) {
String nmbr2;
Double nmbr;
// numero = numero.replace( ".", "" );
// numero = numero.replace( ",", "" );
// numero = numero.trim();

nmbr = Double.parseDouble(numero);

NumberFormat nmbrFrmt = NumberFormat.getNumberInstance(Locale.getDefault());
nmbrFrmt .setMinimumFractionDigits(digits);
nmbr2= nf.format(nmbr );
return nmbr2;
}
Este método é chamado no FocusLost do comoponente TEXT do SWT. Mas ainda não está como deveria.
Pois se o campo ja possui valor ele me dá erro, ele não consegue formatar um campo que ja foi formatado, ou seja, as vírguças ou pontos não podem passar por esse método.
Mas se eu retirar os "." e "," vai acabar somando.
Exemplo:
1) Campo vazio, digito o valor 12, ele vai retornar ao campo 12,00 (Pois o método tem atributo digits, que é qtde de digitos depois da vírgula).
2) Caso eu saia do campo (que já está com o valor 12,00) ele da erro, ou caso eu implemente a retirada do "." e da "," ele vai ler 1200, e vai retornar 1200,00.

Alguma ideia ?

This message was edited 1 time. Last update was at 06/07/2009 13:23:26

thiago.correa
GUJ Master
[Avatar]

Membro desde: 26/03/2006 18:54:30
Mensagens: 1861
Offline

É meio mão na roda mas, funciona

This message was edited 1 time. Last update was at 06/07/2009 13:44:57


---
"Se não puder ajudar, atrapalhe, afinal de contas o importante é participar!"
Thiago
[MSN]
fsfnit
Java Ninja
[Avatar]

Membro desde: 16/05/2006 13:38:27
Mensagens: 283
Localização: Far Far Away - Niterói / RJ
Offline

thiago.correa wrote:É meio mão na roda mas, funciona


Infelizmente não funcionou, a saída é o mesmo numero: 1.322,3
thiago.correa
GUJ Master
[Avatar]

Membro desde: 26/03/2006 18:54:30
Mensagens: 1861
Offline

Então, é para ele formatar um texto já formatado, assim você não tem erro, não era isso que você queria?!
Bom, tu já tá com a faca e o queijo, isso vai ajudar o teu CVC *

* Coeficiente de viração própria
Boa sorte

---
"Se não puder ajudar, atrapalhe, afinal de contas o importante é participar!"
Thiago
[MSN]
fsfnit
Java Ninja
[Avatar]

Membro desde: 16/05/2006 13:38:27
Mensagens: 283
Localização: Far Far Away - Niterói / RJ
Offline

Resolvi assim:

sauron_fight
Debugger
[Avatar]

Membro desde: 07/11/2007 16:29:51
Mensagens: 56
Offline

Tenho alguns campos String, mais precisava fazer alguns cálculos, então fiz uma parseDouble e deu certo.
Mais se eu utilizar a formatação DecimalFormat f = new DecimalFormat(",##0.00");
nao estou conseguindo passar para Double alguem pode me ajudar?

No exemplo abaixo como formato Number para Double?




Neste exemplo : String a = "1.322,3";
NumberFormat df = DecimalFormat.getInstance();
Number n = df.parse(a);
System.out.println(df.format(n));
marcobiscaro2112
JWizard

Membro desde: 01/12/2008 11:56:04
Mensagens: 2408
Localização: São Paulo - SP
Offline

Basta fazer um cast de Number para Double:

Marco Biscaro.

Seja livre!

Você sabia que provavelmente há milhares de arquivos duplicados no seu computador?

Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[Email] [WWW] [MSN]
sauron_fight
Debugger
[Avatar]

Membro desde: 07/11/2007 16:29:51
Mensagens: 56
Offline

O amigo muito obrigado! Deu tudo certo!
 
Índice dos Fóruns » Interface Gráfica
Ir para:   
Powered by JForum 2.1.8 © JForum Team