Devi definire un tuo Document personalizzato. Ad esempio definisci una classe NumericPlainDocument che estende PlainDocument. In questa classe ridefinisci il metodo insertString(...) :
codice:
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;
public class NumericPlainDocument extends PlainDocument {
public void insertString (int offset, String str, AttributeSet attr) throws BadLocationException {
if (str == null) return;
if ((getLength() + str.length()) <= 3) {
char c = str.toCharArray()[0];
if (((Character.isDigit(c) || (c == java.awt.event.KeyEvent.VK_BACK_SPACE) || (c == java.awt.event.KeyEvent.VK_DELETE)))) {
super.insertString(offset, str, attr);
}
}
}
}
Quindi impostare questo Document come documento del tuo JTextField:
codice:
tuoJTextField.setDocument(new NumericPlainDocument());