Nur Zahlen in Textfeld eingeben: Unterschied zwischen den Versionen
Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springenK (→Setzen eines Documents) |
(→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|javax.swing.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> | <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.text.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>