Module java.desktop
Package javax.swing.text

Class DocumentFilter

java.lang.Object
javax.swing.text.DocumentFilter

public class DocumentFilter extends Object
DocumentFilter,顾名思义,是对Document变异方法的过滤器。当包含DocumentFilterDocument被修改(通过insertremove),它会将适当的方法调用转发给DocumentFilter。默认实现允许修改发生。子类可以通过有条件地调用超类上的方法或调用传入的FilterBypass上的必要方法来过滤修改。子类不应该回调到Document进行修改,而是应该调用超类或FilterBypass

当在DocumentFilter上调用removeinsertString时,DocumentFilter可能会多次回调到FilterBypass,或者针对不同区域,但在从removeinsertString方法返回后不应再回调到FilterBypass

默认情况下,文本相关的文档变异方法,如insertStringreplaceremoveAbstractDocument中使用DocumentFilter(如果可用),而元素相关的变异方法,如createinsertremoveElementDefaultStyledDocument中不使用DocumentFilter。如果某个方法不遵循这些默认值,则必须在方法文档中明确说明。

自 JDK 版本:
1.4
参见:
  • 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 - 给定的插入位置不是文档中的有效位置