java Swing JTextField 限制輸入字符(複製粘貼也有效)

//txt_address1.setDocument(new LimitedDocument(25));
class LimitedDocument extends PlainDocument {

    private static final long serialVersionUID = 1L;
    private int maxLength = -1;// 允許的最大長度
    private String allowCharAsString = null;// 允許的字符串格式(0123456789)

    public LimitedDocument() {
        super();
    }

    public LimitedDocument(int maxLength) {
        super();
        this.maxLength = maxLength;
    }

    public void insertString(int offset, String str, AttributeSet attrSet) throws BadLocationException {
        if (str == null) {
            return;
        }
        if (allowCharAsString != null && str.length() == 1) {
            if (allowCharAsString.indexOf(str) == -1) {
                return;// 不是所要求的字符格式,就直接返回,不進行下面的添加
            }
        }
        char[] charVal = str.toCharArray();
        String strOldValue = getText(0, getLength());
        char[] tmp = strOldValue.toCharArray();
        if (maxLength != -1 && (tmp.length + charVal.length > maxLength)) {
            Toolkit.getDefaultToolkit().beep();// 發出一個警告聲
            return;// 長度大於指定的長度maxLength,也直接返回,不進行下面的添加
        }
        super.insertString(offset, str, attrSet);
    }

    public void setAllowChar(String str) {
        allowCharAsString = str;
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章