JFormattedField

Eu fiz o seguinte

limite2 = new JFormattedTextField(); maskData = new MaskFormatter("##"); maskData.setValidCharacters("012"); maskData.install(limite2);
minha dúvida é o seguinte, tem como eu inserir somente até o número “20” ao invés de até “22” que está agora?

Sobreescreva o PlainDocument do JTextField alterando o método insertString
mais ou menos assim:

// não testado Document doc = new PlainDocument(){ private final int max = 20; @Override public void insertString(int offs, String str, AttributeSet a) throws BadLocationException { int avail = max - getLength(); if (avail > 0) { String insert = str; if (str.length() > avail) { insert = str.substring(0, avail); } super.insertString(offs, insert, a); } } }; textField = new JTextField(doc, "teste", 20); // OU textField.setDocument(doc);

n entedi mt bem, mas apliquei, e aqui não deu certo, quero que o usuario seja impedido de inserir qualquer coisa acima do numero 20, e ali deu pra inserir letra e tudo mais