Hi
ich mache mir in solchen Fällen lieber ein neues Document:
z.B.
public class myDocument extends PlainDocument {
private int maxLength = 9999;
public FixedNumericDocument(int maxLength) {
super();
this.maxLength = maxLength;
public void insertString(int offset, String str, AttributeSet attr)
throws BadLocationException {
if (getLength() + str.length() > maxLength) {
Toolkit.getDefaultToolkit().beep();
return;
} else {
super.insertString(offset, str, attr);
}
In der IF-Abfrage prüft er zuerst, ob der neu einzufügende String nicht mit dem alten zusammen die maLänge uberschreitet, wenn ja machts beep, ansonsten fügt er in ein. Mann kann noch viel mehr an prüfungen einbauen. Das Document hat den Vorteil, halt nur einmal da, mehrfach verwendbar, und hat nicht den Nachteil des KeyListener, denn wenn man da sehr schnell den Text eingibt und wieder löscht, dann kann er schon mal durcheinander kommen.