# In Textfield nur Dezimal Zahlen



## baxis (9. September 2005)

Hallo

Ich würde gerne ein Textfeld machen, in das nur Dezimalzahlen eingegeben werden können.
Ich habe schon folgendes versucht:

```
txtXKoord = new JFormattedTextField( new DecimalFormat("#.#"));
```
Da kann ich aber immer noch Texte eingeben. Die actionPerformed wird dann nur aufgerufen wenn ich eine Zahl eingegeben habe. Aber ich will das schon gar keine Texte eingegeben werden können.
Ich brauche das weil ich über:

```
xKoord = Double.parseDouble(txtXKoord.getText());
```
ein double erstellen möchte.

Weiss jemand Rat?

Danke


----------



## Thomas Darimont (9. September 2005)

Hallo!

 Schau mal hier:
http://www.tutorials.de/tutorials206091.html
 Für Dezimalzahlen müsstest du denn regulären Ausdruck von "\\D*" in -?\\d+(\\,\\d*)?
 umwandeln.

 Gruß Tom


----------



## Konobi (9. September 2005)

Versuche es dochmal hiermit müsste Funktionieren:



```
JFormattedTextField txtXKoord = null;
MaskFormatter formatter;

try{
            formatter = new MaskFormatter("");
            formatter.setValidCharacters("0123456789");

            txtXKoord = new JFormattedTextField(formatter);
            txtXKoord.setPreferredSize (new Dimension(51,23));
}
catch(Exception e){
}
```

mfg
Konobi


----------



## baxis (9. September 2005)

Danke für eure Antworten.

Ich habe mich für das von Konobi entschieden, da ich da gar keine anderen Zeichen eingeben kann als die, die ich angebe. Ein kleine Änderung braucht es jedoch noch bei
formatter = new MaskFormatter("");
 muss noch angegeben werden wieviele Zeichen und von welchem Typ möglich sind. z.b so:
formatter = new MaskFormatter("*********");
Je nachdem haben die Zeichen unterschiedliche Bedeutung.
siehe auch JFormattedTextField

bei mir sieht das jetzt so aus:

```
JFormattedTextField txtXKoord = null;
        MaskFormatter formatter;
        try{
                    formatter = new MaskFormatter("*******************");
                    formatter.setValidCharacters("0123456789.,");
                    
                    txtXKoord = new JFormattedTextField(
                            formatter);
        }
        catch(Exception e){
            e.printStackTrace();
        }
```


----------



## kroesi (16. September 2005)

Hi,

Es geht auch noch ganz anderes:

Bei einem normalen TextFeld kannst du über setDocument eine von javax.swing.text.DefaultStyledDocument abgeleite Klasse übergeben, die die Methode insertString überschreibt.
Weiss aber jetzt auch nicht mehr genau wie ... Musst du mal googlen, funktioniert aber !

Krösi


----------



## Snape (16. September 2005)

Moin,
guggst Du z.B. hier: http://www.tutorials.de/tutorials201253.html


----------

