This discussion is archived
7 Replies Latest reply: Sep 24, 2012 12:00 AM by Jörg RSS

JFormattedTextField looses document

563912 Newbie
Currently Being Moderated
Hi, I have a class "BADTextField" that extends JFormattedTextField, and a class "BADDocument" that extends PlainDocument
I want to limit the number of characters in the JFormattedTextField using the Document.

I have this in my BADTextField that is called during construction
private void setLengthLimit(final Integer lengthLimit) {
        if (lengthLimit != null) {
            setDocument(new BADDocument(lengthLimit));
        }
    }
Here is my BADDocument
package dk.steria.exp.client.components;

import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;

public class BADDocument extends PlainDocument {
    private static final long serialVersionUID = 1L;
    private int limit;

    public BADDocument(int limit) {
        super();
        setLimit(limit); // store the limit    
    }

    public final int getLimit() {
        return limit;
    }

    public void insertString(int offset, String s, AttributeSet attributeSet) throws BadLocationException {
        if (s == null)
            return;
        if (offset < limit) {
            super.insertString(offset, s, attributeSet);
        } else
            java.awt.Toolkit.getDefaultToolkit().beep();
    }

    public final void setLimit(int newValue) {
        this.limit = newValue;
    }
}
When I start my Swing application it sometimes work, but after navigating the input fields it suddenly does not work. It it like the Document disappears from the JFormattedTextField. I can't seem to find a pattern for when it works and when it stops working.

Anyone had the same or similar problem ?

Edited by: Kristian Lind on Sep 19, 2012 3:15 PM

Legend

  • Correct Answers - 10 points
  • Helpful Answers - 5 points