Nur Zahlen in Textfeld eingeben: Unterschied zwischen den Versionen

Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springen
(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…“)
 
K (Setzen eines Documents)
Zeile 2: Zeile 2:
  
 
=Setzen eines Documents=
 
=Setzen eines Documents=
Damit ein Textfeld ({{JAPI|JTextField}}, {{JAPI|JTextArea}} etc.) ein gewünschtes/verändertes Verhalten annehmen kann, genügt es, ein passendes {{JAPI|Document}} zu übergeben.
+
Damit ein Textfeld ({{JAPI|JTextField}}, {{JAPI|JTextArea}} etc.) ein gewünschtes/verändertes Verhalten annehmen kann, genügt es, ein passendes {{JAPI|javax.swing.Document}} zu übergeben.
 
<code=Java>
 
<code=Java>
 
     textField.setDocument(new IntegerDoucument());
 
     textField.setDocument(new IntegerDoucument());

Version vom 27. Dezember 2014, 22:41 Uhr

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 javax.swing.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>