Nur Zahlen in Textfeld eingeben: Unterschied zwischen den Versionen

Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springen
K
Zeile 6: Zeile 6:
 
=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|javax.swing.text.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.text.Document}} zu übergeben.
<code=Java>
+
<syntaxhighlight lang="java">
 
     textField.setDocument(new IntegerDoucument());
 
     textField.setDocument(new IntegerDoucument());
</code=java>
+
</syntaxhighlight>
  
 
In obigem Beispiel wird bspw. einem JTextField das folgende Document übergeben, so dass das Textfeld nur noch ganze Zahlen als Eingabe akzepziert.
 
In obigem Beispiel wird bspw. einem JTextField das folgende Document übergeben, so dass das Textfeld nur noch ganze Zahlen als Eingabe akzepziert.
Zeile 14: Zeile 14:
 
=Nur Integer-Werte erlauben=
 
=Nur Integer-Werte erlauben=
 
Dazu leiten wir ein Objekt vom Typ {{JAPI|PlainDocument}} ab und erweitern es so, dass es nur noch ganze Zahlen akzeptiert:
 
Dazu leiten wir ein Objekt vom Typ {{JAPI|PlainDocument}} ab und erweitern es so, dass es nur noch ganze Zahlen akzeptiert:
<code=java>
+
<syntaxhighlight lang="java">
 
     class IntegerDocument extends PlainDocument {
 
     class IntegerDocument extends PlainDocument {
  
Zeile 26: Zeile 26:
 
         }
 
         }
 
     }
 
     }
</code=java>
+
</syntaxhighlight>
  
 
==Beschränken der Größe der Zahl==
 
==Beschränken der Größe der Zahl==

Version vom 8. März 2018, 19:58 Uhr

Einleitung

Oft wird gefragt, wie man vom Benutzer nur Zahlen in Textfeldern eingeben lassen kann. Benutzereingaben in Textfelder sollen also von vorn herein nur auf Zahlen eingeschränkt werden.

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.text.Document zu übergeben.

    textField.setDocument(new IntegerDoucument());

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:

    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
            }            
        }
    }

Beschränken der Größe der Zahl

Nur Buchstaben erlauben

Fragen

Das Thema wurde nicht ausreichend behandelt? Du hast Fragen dazu und brauchst weitere Informationen? Lass Dir von uns helfen!

Wir helfen dir gerne!


Dir hat dieser Artikel gefallen? Oder Du hast Fehler entdeckt und möchtest zur Berichtigung beitragen? Prima! Schreibe einen Kommentar!

Du musst angemeldet sein, um einen Kommentar abzugeben.