27ago/090
Limitando número máximo de caracteres em um JTextField
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)){
str = str.substring(0, 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, se a quantidade de caracteres inseridos for maior que o tamanho definido, a String será cortada.
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!