java.lang.Object
javax.swing.text.DocumentFilter
DocumentFilter,顾名思义,是对Document变异方法的过滤器。当包含DocumentFilter的Document被修改(通过insert或remove),它会将适当的方法调用转发给DocumentFilter。默认实现允许修改发生。子类可以通过有条件地调用超类上的方法或调用传入的FilterBypass上的必要方法来过滤修改。子类不应该回调到Document进行修改,而是应该调用超类或FilterBypass。
当在DocumentFilter上调用remove或insertString时,DocumentFilter可能会多次回调到FilterBypass,或者针对不同区域,但在从remove或insertString方法返回后不应再回调到FilterBypass。
默认情况下,文本相关的文档变异方法,如insertString、replace和remove在AbstractDocument中使用DocumentFilter(如果可用),而元素相关的变异方法,如create、insert和removeElement在DefaultStyledDocument中不使用DocumentFilter。如果某个方法不遵循这些默认值,则必须在方法文档中明确说明。
- 自 JDK 版本:
- 1.4
- 参见:
-
Nested Class Summary
Nested Classes -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidinsertString(DocumentFilter.FilterBypass fb, int offset, String string, AttributeSet attr) 在将文本插入指定文档之前调用。voidremove(DocumentFilter.FilterBypass fb, int offset, int length) 在指定文档中指定区域移除之前调用。voidreplace(DocumentFilter.FilterBypass fb, int offset, int length, String text, AttributeSet attrs) 在指定文档中替换文本区域之前调用。
-
Constructor Details
-
DocumentFilter
public DocumentFilter()构造一个DocumentFilter。
-
-
Method Details
-
remove
public void remove(DocumentFilter.FilterBypass fb, int offset, int length) throws BadLocationException 在指定文档中指定区域移除之前调用。希望有条件允许移除的子类应该重写此方法,并根据需要仅调用超类的实现,或根据需要直接调用FilterBypass。- 参数:
-
fb- 可用于变异文档的FilterBypass -
offset- 从开头开始的偏移量 >= 0 -
length- 要移除的字符数 >= 0 - 抛出:
-
BadLocationException- 移除范围的某些部分不是文档的有效部分。异常中的位置是遇到的第一个错误位置。
-
insertString
public void insertString(DocumentFilter.FilterBypass fb, int offset, String string, AttributeSet attr) throws BadLocationException 在将文本插入指定文档之前调用。希望有条件允许插入的子类应该重写此方法,并根据需要仅调用超类的实现,或直接调用FilterBypass。- 参数:
-
fb- 可用于变异文档的FilterBypass -
offset- 要插入内容的文档中的偏移量 >= 0。所有在给定位置之后或之后跟踪更改的位置都将移动。 -
string- 要插入的字符串 -
attr- 与插入内容关联的属性。如果没有属性,则可能为null。 - 抛出:
-
BadLocationException- 给定的插入位置不是文档中的有效位置
-
replace
public void replace(DocumentFilter.FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException 在指定文档中替换文本区域之前调用。希望有条件允许替换的子类应该重写此方法,并根据需要仅调用超类的实现,或直接调用FilterBypass。- 参数:
-
fb- 可用于变异文档的FilterBypass -
offset- 文档中的位置 -
length- 要删除的文本长度 -
text- 要插入的文本,null表示没有要插入的文本 -
attrs- 指示插入文本属性的AttributeSet,null是合法的。 - 抛出:
-
BadLocationException- 给定的插入位置不是文档中的有效位置
-