# double in JTable formatieren



## Leroy42 (18. Mai 2007)

Wenn ich eine Spalte eines JTables als von der Klasse Double deklariere,
werden die Werte _standard_-formatiert, was besch... aussieht   

Werte: 1.00 € und 24.99 € stehen untereinander als


```
1
24,99
```

Kann ich deren Formatierung ("_%.2f_") angeben ohne
extra einen eigenen Renderer zu schreiben? Kann ich überhaupt
einen Renderer für die Klasse Double angeben?

Alternativ könnte ich den Typ ja als String angeben und

```
String.format("%.2f", value) ;
```
zurückgeben, aber das möchte ich nicht unbedingt.


----------



## Wildcard (18. Mai 2007)

Du kannst auch einfach getTreeCellRenderComponent überschreiben und das Alignment festlegen.
Edit: ups... du hast ja eine JTable und keinen Tree... naja ist doch eh alles das gleiche  :wink:


----------



## Leroy42 (18. Mai 2007)

Wildcard hat gesagt.:
			
		

> das Alignment festlegen.



Das Alignment ist doch schon bei Zahlen (Integer, Double, ...) rechtsbündig.

Mir geht es darum, daß ganzzahlige Werte als Kommazahlen mit 2 Nachkommastellen
dargestellt werden.

Also

*42* ==> *42,00*


----------



## Wildcard (18. Mai 2007)

DecimalFormat!?


----------



## Leroy42 (18. Mai 2007)

Wildcard hat gesagt.:
			
		

> DecimalFormat!?


... oder print*f*

Das ist schon klar.

Meine Frage ist, wie ich das der JTable beibringe.


----------



## Wildcard (18. Mai 2007)

Du hast die freie Auswahl ob du das im TableModel oder im Renderer erschlagen willst.


----------



## André Uhres (18. Mai 2007)

```
TableCellRenderer renderer = new MyDoubleRenderer();
        table.setDefaultRenderer(Double.class, renderer);
...
class MyDoubleRenderer extends DefaultTableCellRenderer {
    private DecimalFormat formatter;
    public MyDoubleRenderer(){
        super();
        setHorizontalAlignment(SwingConstants.RIGHT);
    }
    public void setValue(Object value){
        if (formatter == null) {
            formatter = new DecimalFormat("###,###,###.##");
            formatter.setMinimumFractionDigits(2);
            DecimalFormatSymbols dfs = formatter.getDecimalFormatSymbols();
            dfs.setGroupingSeparator(' ');
            dfs.setDecimalSeparator(',');
            formatter.setDecimalFormatSymbols(dfs);
        }
        setText((value == null) ? "" : formatter.format(value));
    }
}
```


----------



## Leroy42 (18. Mai 2007)

Danke! Funktioniert prima!


----------

