Marc Reichelt: Problem mit JFormattedTextField

Beitrag lesen

Hallo Kay,

ich habe folgendes Problem mit der JFormattedTextField-Komponente:
Ich möchte eine Gleitkommazahl mit unterschiedlicher Anzahl Nachkommastellen zulassen. Wenn ich nun aber die Zahl 12.983 darstellen will, wird sie automatisch auf 13 gerundet. Ich finde einfach den Fehler nicht.

text = new JFormattedTextField(new Double(0.0));
String s = "12.983";
text.setValue(Double.parseDouble(s));

Der Fehler liegt im verwendeten Format.
Ich habe folgenden Code geschrieben, mit dem die Zahl entsprechend dem lokal eingestellten Format dargestellt wird:

import java.text.NumberFormat;  
import javax.swing.JFormattedTextField;  
import javax.swing.JFrame;  
  
public class DoubleTest {  
  
 public static void main(String[] args) {  
  
  JFrame frame = new JFrame();  
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  
  JFormattedTextField tf = new JFormattedTextField(NumberFormat.getNumberInstance());  
  frame.add(tf);  
  
  Double d = Double.parseDouble("12.983");  
  
  tf.setValue(d);  
  
  frame.setVisible(true);  
 }  
  
}

Entscheidend ist dabei die Zeile mit dem folgenden Code:
JFormattedTextField tf = new JFormattedTextField(NumberFormat.getNumberInstance());

Über den Parameter der Methode getNumberInstance(Locale inLocale) solltest du dann die entsprechende Einstellung wählen können - wenn dir die lokale Einstellung nicht ausreicht.

Mehr zu den Nummer-Formaten gibt's hier.

Grüße

Marc Reichelt || http://www.marcreichelt.de/

--
Linux is like a wigwam - no windows, no gates and an Apache inside!
Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)