如何限制 JTextArea 只接受合法的字符集?
任何人都知道是否有一种简单的方法来限制 JTextArea 允许的字符。即类似于使用 MaskFormatter 的 JTextField。
具体来说,我想将 JTextArea 允许的字符限制为仅大写字符和非常有限的字符集,例如 !"#¤%&/()=
Anybody know if there is an easy way to limit the allowed characters for a JTextArea. I.e. similar to JTextField using MaskFormatter.
Specifically I want to limit the allowed characters for a JTextArea to only uppercase characters and only a very limited set characters like !"#¤%&/()=
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
实现 javax.swing.text.DocumentFilter 来删除不适当的字符。将其设置在您最喜欢的
AbstractDocument
上,并用它构造您的JTextArea
。Implement a
javax.swing.text.DocumentFilter
to remove inappropriate characters. Set that on your favouriteAbstractDocument
and construct youJTextArea
with that.您可能会发现链接文档过滤器的概念很有趣。第一个过滤器会自动将小写字符转换为大写字符(包含在上面的链接中),因此用户不必担心这一点,然后第二个过滤器将验证所有字符(您需要编写自己的字符)。
You may find the concept of Chaining Document Filters interesting. The first filter would automatically convert lower case characters to upper case (included in above link) so the user doesn't have to worry about this, then the second filter would validate all the characters (you would need to write your own).
尝试扩展
PlainDocument
并更改方法insertString()
以过滤掉所有不需要的字符并将小写字母替换为大写字母。然后您可以在JTextArea
中使用这个特殊文档。Try to extend
PlainDocument
and change the methodinsertString()
to filter out all unwanted characters and replace lower with uppercase letters. Then you can use this special document in yourJTextArea
.您可以将过滤器分配给 JTextArea 文档。
只需重写类 DocumentFilter 中的方法 insertString 即可忽略字符
You can assign a filter to JTextArea document.
Just override the method insertString in the class DocumentFilter to ignore the characters