Formatar Números Decimais

3 respostas
M

Pessoal,

Estou apanhando p/ formatar números decimais no NetBeans 6.0 . Consegui persistir os dados e mostra-los em um JFormattedTextField,
mas não consigo formata-lo para o padrão brasileiro.

Alguém tem uma idéia.

3 Respostas

T
import java.text.*;
import java.util.*;

class DecimalFormatTest {
    public static void main(String[] args) throws Exception {
        // Se você não quiser o símbolo de real
        Locale ptBR = new Locale ("pt", "BR");
        DecimalFormatSymbols dfs = new DecimalFormatSymbols (ptBR);
        NumberFormat nf = new DecimalFormat ("#,##0.00", dfs);
        double d = nf.parse ("1.200,50").doubleValue(); // converte para double
        System.out.println (nf.format (d)); // imprime "1.200,50"
        // Se quiser o símbolo de real
        nf = NumberFormat.getCurrencyInstance (ptBR);
        System.out.println (nf.format (d)); // imprime "R$ 1.200,50"
    }
}
M

Thingol,

Tudo bem, mas como colocar este formato num JFormattedTextField vinculado a um List de valores ?

Grato.

M

Thingol,

Consegui. Apanhei pra burro, mas no final a burrada era minha. Já estava quase desistindo.

A origem dos dados são tabelas do PostgreSQL que retorna os números decimais com o ponto como separador decimal
(mesmo quando instalado em português, latin1 ou SqlASCII), imaginei que isso pudesse causar confusão. Veja como fiz:

..... nroFormatado = new javax.swing.JFormattedTextField(); nroFormatado.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.NumberFormatter(new java.text.DecimalFormat("#,##0.00")))); nroFormatado.setHorizontalAlignment(javax.swing.JTextField.TRAILING); nroFormatado.setName("nroFormatado"); // NOI18N binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement.difI}"), nroFormatado, org.jdesktop.beansbinding.BeanProperty.create("value")); bindingGroup.addBinding(binding); ........

O meu erro estava no campo vinculado. Eu estava vinculando o campo “text” ao invés de “value”. Agora, o setFormatterFactory funciona sozinho,
sem necessidade de formatação adicional.

Ps: Estou migrando de outras plataformas (Delphi, VB6, C# Express), onde estas questões são fáceis de resolver. No Java/NetBeans 6.0 é sufoco.

Grato pela ajuda e abraços.

Criado 28 de janeiro de 2008
Ultima resposta 29 de jan. de 2008
Respostas 3
Participantes 2