DocumentFilter (Java Platform SE 8 )
Keywords: javax.swing.text.DocumentFilter class
Date: 2026-06-25

javax.swing.text

## Class DocumentFilter

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

-     public class DocumentFilter
      extends Object

  `DocumentFilter`, as the name implies, is a filter for the `Document` mutation methods. When a `Document` containing a `DocumentFilter` is modified (either through `insert` or `remove`), it forwards the appropriate method invocation to the `DocumentFilter`. The default implementation allows the modification to occur. Subclasses can filter the modifications by conditionally invoking methods on the superclass, or invoking the necessary methods on the passed in `FilterBypass`. Subclasses should NOT call back into the Document for the modification instead call into the superclass or the `FilterBypass`.

  When `remove` or `insertString` is invoked on the `DocumentFilter`, the `DocumentFilter` may callback into the `FilterBypass` multiple times, or for different regions, but it should not callback into the `FilterBypass` after returning from the `remove` or `insertString` method.

  By default, text related document mutation methods such as `insertString`, `replace` and `remove` in `AbstractDocument` use `DocumentFilter` when available, and `Element` related mutation methods such as `create`, `insert` and `removeElement` in `DefaultStyledDocument` do not use `DocumentFilter`. If a method doesn't follow these defaults, this must be explicitly stated in the method documentation.

  Since:
    1.4
  See Also:
    `Document`, `AbstractDocument`, `DefaultStyledDocument`

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `DocumentFilter.FilterBypass` Used as a way to circumvent calling back into the Document to change it.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `DocumentFilter()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `insertString(DocumentFilter.FilterBypass fb, int offset, String string, AttributeSet attr)` Invoked prior to insertion of text into the specified Document.
    `void` | `remove(DocumentFilter.FilterBypass fb, int offset, int length)` Invoked prior to removal of the specified region in the specified Document.
    `void` | `replace(DocumentFilter.FilterBypass fb, int offset, int length, String text, AttributeSet attrs)` Invoked prior to replacing a region of text in the specified Document.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### DocumentFilter

          public DocumentFilter()

  - ### Method Detail

    - #### remove

          public void remove(DocumentFilter.FilterBypass fb,
                             int offset,
                             int length)
                      throws BadLocationException

      Invoked prior to removal of the specified region in the specified Document. Subclasses that want to conditionally allow removal should override this and only call supers implementation as necessary, or call directly into the `FilterBypass` as necessary.
      Parameters:
        `fb` - FilterBypass that can be used to mutate Document
        `offset` - the offset from the beginning >= 0
        `length` - the number of characters to remove >= 0
      Throws:
        `BadLocationException` - some portion of the removal range was not a valid part of the document. The location in the exception is the first bad position encountered.

    - #### insertString

          public void insertString(DocumentFilter.FilterBypass fb,
                                   int offset,
                                   String string,
                                   AttributeSet attr)
                            throws BadLocationException

      Invoked prior to insertion of text into the specified Document. Subclasses that want to conditionally allow insertion should override this and only call supers implementation as necessary, or call directly into the FilterBypass.
      Parameters:
        `fb` - FilterBypass that can be used to mutate Document
        `offset` - the offset into the document to insert the content >= 0. All positions that track change at or after the given location will move.
        `string` - the string to insert
        `attr` - the attributes to associate with the inserted content. This may be null if there are no attributes.
      Throws:
        `BadLocationException` - the given insert position is not a valid position within the document

    - #### replace

          public void replace(DocumentFilter.FilterBypass fb,
                              int offset,
                              int length,
                              String text,
                              AttributeSet attrs)
                       throws BadLocationException

      Invoked prior to replacing a region of text in the specified Document. Subclasses that want to conditionally allow replace should override this and only call supers implementation as necessary, or call directly into the FilterBypass.
      Parameters:
        `fb` - FilterBypass that can be used to mutate Document
        `offset` - Location in Document
        `length` - Length of text to delete
        `text` - Text to insert, null indicates no text to insert
        `attrs` - AttributeSet indicating attributes of inserted text, null is legal.
      Throws:
        `BadLocationException` - the given insert position is not a valid position within the document

Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2026, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.