Nur Zahlen in Textfeld eingeben

Aus Byte-Welt Wiki
Version vom 27. Dezember 2014, 22:39 Uhr von L-ectron-x (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „Oft möchte man Benutzereingaben in Textfelder von vorn herein einschränken. Folgender Artikel wird Beispiele für verschiedene Lösungsansätze liefern. =Setze…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springenZur Suche springen

Oft möchte man Benutzereingaben in Textfelder von vorn herein einschränken. Folgender Artikel wird Beispiele für verschiedene Lösungsansätze liefern.

Setzen eines Documents

Damit ein Textfeld (JTextField, JTextArea etc.) ein gewünschtes/verändertes Verhalten annehmen kann, genügt es, ein passendes Document zu übergeben. <code=Java>

   textField.setDocument(new IntegerDoucument());

</code=java>

In obigem Beispiel wird bspw. einem JTextField das folgende Document übergeben, so dass das Textfeld nur noch ganze Zahlen als Eingabe akzepziert.

Nur Integer-Werte erlauben

Dazu leiten wir ein Objekt vom Typ PlainDocument ab und erweitern es so, dass es nur noch ganze Zahlen akzeptiert: <code=java>

   class IntegerDocument extends PlainDocument {
       @Override
       public void insertString(int offset, String s, AttributeSet attributeSet) throws BadLocationException {
           if (s.matches("[0-9]")) {
               super.insertString(offset, s, attributeSet);
           } else {
               Toolkit.getDefaultToolkit().beep(); //keine Ziffer eingegeben
           }            
       }
   }

</code=java>