Originariamente inviato da andbin
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 (offs + str.length () > maxSize)
            str = str.substring (0, maxSize - offs);

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

tuoTextField.setDocument (new LimitedPlainDocument (20));
Grazie mille! Nel frattempo avevo risolto così:

codice:
        private class MyKeyListener extends KeyAdapter {

	    private String oldString;

	    private int limit;

	    public MyKeyListener(int limit) throws IllegalArgumentException {
		if (limit < 1) {
		    throw new IllegalArgumentException("limit must be > 0");
		}

		this.limit = limit;
	    }

	    @Override
	    public void keyTyped(KeyEvent e) {
		if (category.getText().length() > limit) {
		    e.consume();
		} else {
		    oldString = category.getText();
		}
	    }

	    @Override
	    public void keyReleased(KeyEvent e) {
		if (category.getText().length() > limit) {
		    category.setText(oldString);
		}
	    }
	}
ma la tua soluzione mi sembra più adatta ^^

Grazie ancora