我们在做java gui开发的时候,有的时候需要对文本框中的内容进行限制,比如最大长度、转换为大写等。今天就为大家介绍一下该如何实现。
通过查阅jdk api,我们可以知道,在<code>jtextfield</code>中提供了<code>setdocument(document doc)</code>方法,用于将编辑器与一个文本文档关联。那么我们就需要使用它啦。
<code>document</code>是一个接口,有如下几个实现类:
abstractdocument
defaultstyleddocument
htmldocument
plaindocument
这里我们需要使用的就是<code>plaindocument</code>,<code>plaindocument</code>维护无任何字符属性的普通文档。此文档的默认元素结构是文本中的行的映射。由 getdefaultrootelement 返回的 element 是行的映射,且每个子元素表示一行。此模型不维护任何字符级属性,但每行都可以用一个任意的属性集来标记。使用默认的根元素可以快速执行从行到偏移量和从偏移量到行的转换。由编辑激发的 documentevent 的结构信息将指示行结构的更改。 默认的内容存储管理是通过间隙缓冲区实现 (gapcontent) 执行的。如果编辑是连续的或集群化的(正如常见的那样),此操作支持对大型文档的高效合理编辑。
在<code>plaindocument</code>中提供了<code>insertstring(int offs, string str, attributeset a)</code>,用于向文档中插入某些内容,所以我们只需要重写该方法就可以了。
首先我们先来写一个将输入字符转换为大写的示例:
编写测试方法:
是不是很简单,接下来我们再来实现一个通过正则校验输入内容的文档:
继续编写测试方法对其进行测试:
通过上面两个示例,相信大家已经知道了如何限制输入框输入的内容了,在实际应用中,我们可以根据实际情况编写我们自己的<code>plaindocument</code>。