Boa noite…
Em que propriedade estipular o valor maximo de digitos de um edit? eu tava fuçando, mas nao encontrei.
Boa noite…
Em que propriedade estipular o valor maximo de digitos de um edit? eu tava fuçando, mas nao encontrei.
Até onde sei, infelizmente essa propriedade não existe. Uma solução é usar JTextField.setDocument() passando um Document especializado para limitar o número máximo de caracteres. Segue abaixo o Document que uso em minhas aplicações:
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;
// PlainDocument com limitação ao número máximo de caracteres armazenados.
// Valores de limite menores ou iguais a zero indicam que não haverá
// limitações ao número de caracteres.
public class FixedSizePlainDocument extends PlainDocument {
private int maximumSize = 0;
public FixedSizePlainDocument(int maximumSize) {
this.maximumSize = maximumSize;
}
public FixedSizePlainDocument() {
this(0);
}
public int getMaximumSize() {
return maximumSize;
}
public void setMaximumSize(int maximumSize) {
this.maximumSize = maximumSize;
}
@Override
public void insertString(int offset, String str, AttributeSet attr)
throws BadLocationException {
// Evita strings nulas ou vazias
if ((str == null) ||
(str.length() < 1)) {
return;
}
// Só faz checagem de tamanho se o limite for maior do que zero
if (maximumSize > 0) {
// Se o texto atual já chegou ao limite, sai
int curSize = this.getLength();
if (curSize >= maximumSize) {
return;
}
// Se a soma do comprimento atual do texto com o comprimento do
// trecho a ser inserido superar o limite ajustado, trunca o
// trecho a inserir para respeitar o limite
int strSize = str.length();
int sumSize = curSize + strSize;
if (sumSize > maximumSize) {
int lastPosition = Math.min(strSize, strSize - (sumSize - maximumSize));
if (lastPosition >= 0) {
str = str.substring(0, lastPosition);
}
}
}
// Insere a string
super.insertString(offset, str, attr);
}
}