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.
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.
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"
}
}
Thingol,
Tudo bem, mas como colocar este formato num JFormattedTextField vinculado a um List de valores ?
Grato.
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.