A implementação padrão do JTextField não permite definir um limite para inserção de caracteres. Para habilitar este recurso é necessário implementar um Document, onde será necessário sobrescrever o método insertString.
public class MaxLengthTextDocument extends PlainDocument {
//Armazena o número máximo de caracteres para o texto.
private int maxChars;
@Override
public void insertString(int offs, String str, AttributeSet a)
throws BadLocationException {
if(str != null && (getLength() + str.length() < maxChars)){
super.insertString(offs, str, a);
}
}
//getter e setter omitidos
}
Aqui definimos a classe MaxLengthTextDocument estendendo a PlainDocument. No atributo insertString inserimos uma regra onde só será inserido valor se comprimento não ultrapassar o valor máximo.
Depois é só inserir a implementação no JTextField, desta forma:
... MaxLengthTextDocument maxLength = new MaxLengthTextDocument(); maxLength.setMaxChars(50);//Limitamos para 50 caracteres jTextField.setDocument(maxLength); ...
E voilá!
Até mais!
dezembro 26th, 2010 on 18:02
Brother muito obrigado pela disposição de mostrar a solução para maxlength em jtextfield, na internet para ver um exemplo ta foda!(dez 2010) Mas ainda sou muito iniciante no swing. Portanto, poderia colocar já pedindo muito um exemplo completo +- . Eu crio um jpainel adiciono uma label e depois jtextfield. por exemplo para cep. só pode 715151220 (9 digitos).
Vou criar a sua classe , jogar em algum pacote ? tenho que apontar algo? e depois dentro da onde do jtextfield eu coloco a segunda explicação?
Mas uma vez muitíssimo obrigado pela iniciativa. Parabéns!!!