Ae pessoal, estou utilizando as seguintes classes para aceitar somente números num JTextField e também para limitar a quantidade de caracteres:
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;
public class JTextFieldNumbersLimit extends FixedLengthDocument {
public JTextFieldNumbersLimit(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);
}
}
class FixedLengthDocument extends PlainDocument {
private int maxLength;
public FixedLengthDocument(int maxlen) {
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);
}
}
O problema é que o campo não aceita eu colar alguma coisa nele. Até que colar ainda não é o maior problema,
o problema real é que estou fazendo um cadastro e quando carrego um registro do banco eu preciso preencher
os dados retornados no campo:
txInscricaoEstadual.setText(fornecedor.getInscricaoEstadual());
Mas não funciona. Alguém tem uma idéia?