Ola vou te mostrar como utilizo o plain documente
Tenho está classe que verifica a quantidade de dados digitados
Observe que estou herdando PlainDocument
public class FixedLengthDocument extends PlainDocument
{
private int maxLength;
public FixedLengthDocument(int maxlen) { // Determino a quantidade de informações poderão ser digitadas
super();
if (maxlen <= 0)
throw new IllegalArgumentException("You must specify a maximum length!");
maxLength = maxlen;
}
@Override
public void insertString(int offset, String str, AttributeSet attr)
throws BadLocationException {
if (str == null || getLength() == maxLength)
return;
int totalLen = (getLength() + str.length());
if (totalLen <= maxLength) {
super.insertString(offset, str, attr);
return;
}
String newStr = str.substring(0, (maxLength - getLength()));
super.insertString(offset, newStr, attr);
}
}
Aqui está a jogada somente com está classe não terá que se preocupar mais em testar os dados
observe que estou agora herdando a classe FixedLengthDocument que herda a classe Plain
você com isso tem a possibilidade de validar para aceitar somente numeros inteiro como tambem permitir somente uma quantidade de dados
public class IntegerDocument extends FixedLengthDocument{
public IntegerDocument(int maxlen) {
super(maxlen);
}
@Override
public void insertString(int offset, String str, AttributeSet attr)
throws BadLocationException {
if (str == null)
return;
try {
Integer.parseInt(str);
} catch (Exception e) {
return;
}
super.insertString(offset, str, attr);
}
}
para validar os dados é so
seuTXFIELD.setDocument(new IntegerDocument(10))