swing限制文本框只能输入数字和大写字母
public class HFNumberAndCapitalLetterField extends PlainDocument {
private static final long serialVersionUID = -9097723237491608405L;
private int limit; //限制的长度
public HFNumberAndCapitalLetterField() {
super();
}
public HFNumberAndCapitalLetterField(int limit) {
super(); //调用父类构造
this.limit = limit;
}
public void insertString(int offset, String str, AttributeSet attr) throws javax.swing.text.BadLocationException {
if (str == null) {
return;
}
if((getLength() + str.length()) > limit) {
return;
}
char[] s = str.toCharArray();
int length = 0;
for (int i = 0; i < s.length; i++) {
if ((s[i] >= '0') && (s[i] <= '9') || (s[i] >= 'A') && (s[i] <= 'Z')) {
s[length++] = s[i];
}
}
// 插入内容
super.insertString(offset, new String(s, 0, length), attr);
}
}
JTextField.setDocument(new HFNumberAndCapitalLetterField());