Formatação de números

6 respostas
JPinhead

olá pessoal…
o problema agora é o seguinte: eu tenho um textfield o qual um usuário insere um valor referfente à moeda ex “125414” e a classe Decimalformat formata para “1.254,14”… agora eu tenho que pegrar esse valor e inserir no banco(MySQL) como Double “1254.14”.
Como faço para converter o valor para double…
Ou existe outra forma de “mostrar como moeda” e “Inserir no banco como Double”…

valeww

6 Respostas

_fs

Sim, utilizando AbstractFormatterFactory. Um exemplo simples:

DefaultFormatter formatter = new NumberFormatter( new DecimalFormat( "#,##0.00" ) ) );

JFormattedTextField field = new JFormattedTextField();

field.setFormatterFactory( new DefaultFormatterFactory( numberFormatter,
				numberFormatter, numberFormatter ) );

// e mais tarde ...

Double value = ( Double ) formatter.stringToValue( field.getText() );

Mais em:
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/text/DefaultFormatterFactory.html
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JFormattedTextField.html

JPinhead

valew a dica…
mas estou tendo problemas na conversão:

java.lang.ClassCastException
na linha

Double limite = ( Double ) formatter.stringToValue( tflimite.getText() );

o q pode ser…

quando eu inserir no banco ele tem que Pegar do valor do JFormatedTextfild tirar os “pontos” e trocar a virgula por “ponto”… é isso que esse método faz?
e na hora de mostar tem como fazer o inverso…
pegar o Double q tá no banco e mostrar como “moeda” no JFormatedTextFild…

Vamos lá pessoal… eu sei q isso pra vcs é simples!

_fs

Pode fazer assim:

String text = txt.getText();
String value = text.replaceAll( "\.", "" ).replaceAll( ",", "." );

Mas se quiser fazer bonito, aqui tem um exemplo bem mastigado utilizando a sugestão que dei:
http://java.sun.com/docs/books/tutorial/uiswing/components/formattedtextfield.html

JPinhead

já tô enchendo o saco… eu sei…
mas tenho q pedir ajuda pra alguém…

para inserir tá ok…
o usuario digita “12544,14”
o JformatedTextfield(decimalformat) mostra “12.544,14”
e vai para o banco “12544.14”

mas o valor que vem do banco fica assim “12544.14” e quando seleciono o JFormatedTextfield(decimalformat) ele formara de novo"1.254.414,00"

como eu faço pra formatar esse valor corretamente…

_fs

Ah então o problema é que está formatando errado?

Como que você está colocando o valor que vem do banco no JFormattedTextField?
field.setText( stringDoBanco )?

Se for assim, tente trocar por field.setValue ou field.setText( formatter.valueToString( new Double( stringDoBanco ) )

JPinhead

valeu cara… resolvido!!

Criado 8 de março de 2005
Ultima resposta 9 de mar. de 2005
Respostas 6
Participantes 2