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