有人知道是否有一種簡單的方法來限制JTextArea的允許字符。即類似於使用MaskFormatter的JTextField。如何限制一個JTextArea只接受一組合法的字符?
具體來說,我想限制允許的字符爲一個JTextArea僅大寫字符,只有非常有限的一組字符,如!「#¤%& /()=
有人知道是否有一種簡單的方法來限制JTextArea的允許字符。即類似於使用MaskFormatter的JTextField。如何限制一個JTextArea只接受一組合法的字符?
具體來說,我想限制允許的字符爲一個JTextArea僅大寫字符,只有非常有限的一組字符,如!「#¤%& /()=
儘量延長PlainDocument
和改變方法insertString()
過濾掉所有不需要的字符,用大寫字母代替低。然後你就可以在你的JTextArea
使用這個特殊的文件。
實現一個javax.swing.text.DocumentFilter
刪除不恰當的字符。設定自己喜愛的AbstractDocument
,構建你JTextArea
這一點。
您可以爲JTextArea文檔指定一個過濾器。 只需重寫類DocumentFilter中的方法insertString即可忽略字符
呃,並替換。 – 2009-10-27 13:53:53
您可能會發現Chaining Document Filters的概念有趣。第一個過濾器會自動將小寫字符轉換爲大寫字母(包含在上面的鏈接中),因此用戶不必擔心這一點,然後第二個過濾器會驗證所有字符(您需要自己編寫)。
新方法是使用DocumentFilter,因此代碼可以在JTextField,JTextArea或JTextPane上重用。唯一的限制是使用的文檔從AbstractDocument擴展。 – camickr 2009-10-27 15:21:10