# Kommazahl mit 2 Nachkomma-Stellen im jFormattedTextField



## Bergmann (15. Jan 2009)

HI,

ich versuch ne Kommazahl in das jFormattedTextField einzugeben, aber wenn ich das Standartformat für Kommazahlen nehm, macht er anstatt nem Punkt ein Komma, und dann meckert der Compiler rum. Ichbekomms aber nich auf die reihe das jFormattedTextField so abzuändern, das es einen Punkt schreibt....
oder kann ich irgendwo einstellen, das der Compiler auch das Komma als Trennzeichen an nimmt?

MfG & Thx Bergmann.


----------



## Ebenius (15. Jan 2009)

Frage Nummer 1: Sicher, dass Du nicht lieber gleich einen JSpinner nehmen möchtest?

Frage Nummer 2: Wie jetzt, der *Compiler* meckert rum? Zur Laufzeit gibt's keinen und zur Kompilierzeit weiß niemand, welches Format das JFormattedTextField Dir ausgeben wird.

Frage Nummer 3: Was willst Du Denn eigentlich machen? Einen Double aus dem String den Dir das JFormattedTextField gibt? Das geht dann (mit Komma, oder was auch immer die Umgebung gerade als Dezimaltrenner nutzt) so: 
	
	
	
	





```
final JFormattedTextField textField =
          new JFormattedTextField(new DecimalFormat("0.##"));
final double result = ((Number) textField.getValue()).doubleValue();
```

Ebenius


----------



## Bergmann (15. Jan 2009)

HI,

also ich bau grad sowas wie n Zinsrechner und da muss man das Startkapital eingeben (als Kommazahl mit 2 Nachkommastellen). Dazu benutz ich ein jFormattedTextField und hab dort als formatterFactory da Format so eingestellt: #0.00 Wenn ich jetzt ne Zahl eingeb is das Dezimaltrennzeichen aber n Komma und da mekert NetBeans rum (das meinte ich mit Compiler), wenn ich auf meinen Berechnen Button drück, weil er n Punkt als Trennzeichen haben will. Und da weiß ich jetzt nich wie ich das umstell, entweder das er das Komma als Trennzeichen nutz, oder dass das jFormattedtextField n Punkt als Trennzeichen setzt. Mir wäre lieber wenn ich n Komma als Trennzeichen hab...

MfG Bergmann.


----------



## Ebenius (15. Jan 2009)

Schau doch mal in den Code-Block weiter oben; Zeile 3. So holst Du den Boolean-Wert aus dem Textfeld. Dann wird alles gut.

BTW: NetBeans meckert nicht rum. Du bekommst bestimmt eine Exception zur Laufzeit; das wolltest Du sagen. Wahrscheinlich in new Double(String), Double.parseDouble(String) oder so einer Methode, ge? Stack-Trace posten hilft oft.


----------



## Bergmann (15. Jan 2009)

ahh, so gehts:

```
double test = ((Number) jFormattedTextField1.getValue()).doubleValue();
```
aber warum geht net so?


```
double test = Double.parseDouble(jFormattedTextField1.getText());
    /*Fehler:
    Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "123,00"
        at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1224)*/
```
Versteh ich nich...

MfG Bergmann.


----------



## Ebenius (15. Jan 2009)

Bergmann hat gesagt.:
			
		

> aber warum geht net so? [...]


Double.parseDouble(String) liest ein double aus einem String, der Punkt als Dezimaltrenner benutzt, keine Tausender-Trennzeichen kann, etc. Diese Methode funktioniert auf allen Plattformen und in allen Umgebungen gleich.

Das JFormattedTextField ist ja für den Benutzer gedacht und unterstützt damit Formate. Formate sind normaler Weise abhängig von Ländern, Religionen, persönlichen Vorlieben, etc. Zum Beispiel Komma in Deutschland für den Dezimaltrenner, Punkt im Englischsprachigen Raum.

Das JFormattedTextField benutzt einen Formatter der sowohl Value to String Konvertierung kann als auch String to Value. Damit benutzt er die gleichen Regeln für format und parse (bei Dir eben mit Komma als Dezimaltrenner).

Verstanden?

Ebenius


----------



## Bergmann (15. Jan 2009)

Alles klar, vielen Dank! ^^


----------

