In Textfield nur Dezimal Zahlen

baxis

Grünschnabel
Hallo

Ich würde gerne ein Textfeld machen, in das nur Dezimalzahlen eingegeben werden können.
Ich habe schon folgendes versucht:
Code:
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:
Code:
xKoord = Double.parseDouble(txtXKoord.getText());
ein double erstellen möchte.

Weiss jemand Rat?

Danke
 
Versuche es dochmal hiermit müsste Funktionieren:


Code:
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
 
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:
Code:
        JFormattedTextField txtXKoord = null;
        MaskFormatter formatter;
        try{
                    formatter = new MaskFormatter("*******************");
                    formatter.setValidCharacters("0123456789.,");
                    
                    txtXKoord = new JFormattedTextField(
                            formatter);
        }
        catch(Exception e){
            e.printStackTrace();
        }
 
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
 

Neue Beiträge

Zurück