Per limitare JTextField si deve estendere PlainDocument:

codice:
import javax.swing.text.*;

public class LimitedPlainDocument extends PlainDocument
{
    private int maxSize;

    public LimitedPlainDocument (int maxSize)
    {
        this.maxSize = maxSize;
    }

    public void insertString (int offs, String str, AttributeSet a)
        throws BadLocationException
    {
        if (str == null)
            return;

        if (getLength () + str.length () > maxSize)
            str = str.substring (0, maxSize - getLength ());

        super.insertString (offs, str, a);
    }
}
Poi ad esempio:

tuoTextField.setDocument (new LimitedPlainDocument (20));