在Java中,我們經常會需要設置文本框只允許輸入數字或字母。下面我們來介紹一下如何使用Java代碼來完成這個任務。
//設置文本框只允許輸入數字 JTextField textField = new JTextField(); textField.setDocument(new NumberOnlyDocument());
上述代碼中,我們使用了一個自定義的文本框限制器NumberOnlyDocument,它只允許輸入數字。
class NumberOnlyDocument extends PlainDocument { public NumberOnlyDocument() { super(); } public void insertString(int offset, String str, AttributeSet attr) throws BadLocationException { if (str == null) { return; } char[] chars = str.toCharArray(); boolean ok = true; for (int i = 0; i< chars.length; i++) { try { Integer.parseInt(String.valueOf(chars[i])); } catch (NumberFormatException exc) { ok = false; break; } } if (ok) { super.insertString(offset, new String(chars), attr); } } }
在NumberOnlyDocument中,我們重寫了PlainDocument的insertString方法,在文本框輸入內容時,先將輸入的字符轉換為字符數組,在遍歷字符數組中的每一個字符,檢查是否為數字,如果是數字,則允許輸入,否則將輸入的字符忽略。
//設置文本框只允許輸入字母 JTextField textField = new JTextField(); textField.setDocument(new LetterOnlyDocument());
同樣地,我們可以自定義一個文本框限制器LetterOnlyDocument,它只允許輸入字母。
class LetterOnlyDocument extends PlainDocument { public LetterOnlyDocument() { super(); } public void insertString(int offset, String str, AttributeSet attr) throws BadLocationException { if (str == null) { return; } char[] chars = str.toCharArray(); boolean ok = true; for (int i = 0; i< chars.length; i++) { if (!Character.isLetter(chars[i])) { ok = false; break; } } if (ok) { super.insertString(offset, new String(chars), attr); } } }
在上述代碼中,我們只需將遍歷字符數組中的判斷條件改為判斷是否為字母即可。
通過以上的代碼,我們就可以輕松地實現文本框只允許輸入數字或字母的限制。
下一篇python相近詞匹配