在Java中,有時需要限制用戶在輸入時只能輸入數(shù)字或字母,而不能輸入其他字符。這在很多情況下都是必要的,比如用戶注冊時需要輸入賬號和密碼,如果用戶輸入非法字符可能會導致安全問題。
//限制用戶只能輸入數(shù)字 textField.setDocument(new NumberOnlyDocument()); //限制用戶只能輸入字母 textField.setDocument(new LetterOnlyDocument());
上述代碼中,使用了兩種不同的Document實現(xiàn),分別限制用戶只能輸入數(shù)字或字母。
public class NumberOnlyDocument extends PlainDocument { public void insertString(int offset, String s, AttributeSet attributeSet) throws BadLocationException { try { Integer.parseInt(s); super.insertString(offset, s, attributeSet); } catch (NumberFormatException e) { } } } public class LetterOnlyDocument extends PlainDocument { public void insertString(int offset, String s, AttributeSet attributeSet) throws BadLocationException { if (s == null) { return; } char[] chars = s.toCharArray(); for (int i = 0; i < chars.length; i++) { if (!Character.isLetter(chars[i])) { return; } } super.insertString(offset, s, attributeSet); } }
這兩個Document實現(xiàn)基礎(chǔ)類都是PlainDocument,最主要的方法是insertString。在insertString中判斷用戶輸入的字符是否合法,如果合法則使用父類的方法插入字符串,否則不進行任何操作。
通過使用這兩個Document實現(xiàn),就可以限制用戶只能輸入數(shù)字或字母,可以有效避免輸入非法字符的情況。