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());