模块  java.desktop
软件包  javax.swing.text

Class DocumentFilter


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

    removeinsertString在被调用DocumentFilter ,该DocumentFilter可能回调到FilterBypass多次,或针对不同的区域,但它不应该回调到FilterBypass从返回后removeinsertString方法。

    默认情况下,文本文档相关基因突变的方法,如insertStringreplaceremoveAbstractDocument使用DocumentFilter的时候用,并Element相关基因突变的方法,如createinsertremoveElementDefaultStyledDocument不要使用DocumentFilter 如果方法不遵循这些默认值,则必须在方法文档中明确说明。

    从以下版本开始:
    1.4
    另请参见:
    DocumentAbstractDocumentDefaultStyledDocument
    • 构造方法详细信息

      • DocumentFilter

        public DocumentFilter()
    • 方法详细信息

      • 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