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

相关