Nur Zahlen in Textfeld eingeben: Unterschied zwischen den Versionen
Aus Byte-Welt Wiki
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…“ |
|||
| 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>
