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 Description static class
DocumentFilter.FilterBypass
Used as a way to circumvent calling back into the Document to change it. -
Constructor Summary
Constructors Constructor Description DocumentFilter()
-
Method Summary
Modifier and Type Method 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.
-
Constructor Details
-
DocumentFilter
public DocumentFilter()
-
-
Method Details
-
remove
public void remove(DocumentFilter.FilterBypass fb, int offset, int length) throws BadLocationExceptionInvoked 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 theFilterBypass
as necessary.- Parameters:
fb
- FilterBypass that can be used to mutate Documentoffset
- the offset from the beginning >= 0length
- 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 BadLocationExceptionInvoked 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 Documentoffset
- 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 insertattr
- 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 BadLocationExceptionInvoked 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 Documentoffset
- Location in Documentlength
- Length of text to deletetext
- Text to insert, null indicates no text to insertattrs
- AttributeSet indicating attributes of inserted text, null is legal.- Throws:
BadLocationException
- the given insert position is not a valid position within the document
-