- java.lang.Object
-
- javax.swing.text.DocumentFilter
-
public class DocumentFilter extends Object
DocumentFilter
,顾名思义,是Document
变异方法的过滤器。 当Document
包含DocumentFilter
(通过insert
或remove
)时,它会将适当的方法调用转发到DocumentFilter
。 默认实现允许进行修改。 子类可以通过有条件地调用超类上的方法来过滤修改,或者在传入的FilterBypass
调用必要的方法。 子类不应该回调用于修改的文档而是调用超类或FilterBypass
。当
remove
或insertString
在被调用DocumentFilter
,该DocumentFilter
可能回调到FilterBypass
多次,或针对不同的区域,但它不应该回调到FilterBypass
从返回后remove
或insertString
方法。默认情况下,文本文档相关基因突变的方法,如
insertString
,replace
和remove
在AbstractDocument
使用DocumentFilter
的时候用,并Element
相关基因突变的方法,如create
,insert
和removeElement
在DefaultStyledDocument
不要使用DocumentFilter
。 如果方法不遵循这些默认值,则必须在方法文档中明确说明。- 从以下版本开始:
- 1.4
- 另请参见:
-
Document
,AbstractDocument
,DefaultStyledDocument
-
-
嵌套类汇总
嵌套类 变量和类型 类 描述 static class
DocumentFilter.FilterBypass
用作规避回调到Document以更改它的方法。
-
构造方法摘要
构造方法 构造器 描述 DocumentFilter()
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 void
insertString(DocumentFilter.FilterBypass fb, int offset, String string, AttributeSet attr)
在将文本插入指定的Document之前调用。void
remove(DocumentFilter.FilterBypass fb, int offset, int length)
在删除指定Document中的指定区域之前调用。void
replace(DocumentFilter.FilterBypass fb, int offset, int length, String text, AttributeSet attrs)
在替换指定Document中的文本区域之前调用。
-
-
-
方法详细信息
-
remove
public void remove(DocumentFilter.FilterBypass fb, int offset, int length) throws BadLocationException
在删除指定Document中的指定区域之前调用。 想要有条件地允许删除的子类应该覆盖它,并且只在必要时调用FilterBypass
实现,或者根据需要直接调用FilterBypass
。- 参数
-
fb
- 可用于改变Document的FilterBypass -
offset
- 从开头的偏移量> = 0 -
length
- 要删除的字符数> = 0 - 异常
-
BadLocationException
- 删除范围的某些部分不是文档的有效部分。 异常中的位置是遇到的第一个不良位置。
-
insertString
public void insertString(DocumentFilter.FilterBypass fb, int offset, String string, AttributeSet attr) throws BadLocationException
在将文本插入指定的Document之前调用。 想要有条件地允许插入的子类应该覆盖它,并且只在必要时调用超级实现,或者直接调用FilterBypass。- 参数
-
fb
- 可用于改变Document的FilterBypass -
offset
- 插入内容的文档偏移量> = 0.在给定位置或之后跟踪更改的所有位置都将移动。 -
string
- 要插入的字符串 -
attr
- 与插入的内容关联的属性。 如果没有属性,则此值可能为null。 - 异常
-
BadLocationException
- 给定的插入位置不是文档中的有效位置
-
replace
public void replace(DocumentFilter.FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException
在替换指定Document中的文本区域之前调用。 想要有条件地允许替换的子类应该覆盖它,并且只在必要时调用超级实现,或者直接调用FilterBypass。- 参数
-
fb
- 可用于改变Document的FilterBypass -
offset
- 文档中的位置 -
length
- 要删除的文本长度 -
text
- 要插入的文本,null表示不插入任何文本 -
attrs
- 指示插入文本属性的AttributeSet,null是合法的。 - 异常
-
BadLocationException
- the given insert position is not a valid position within the document
-
-