The DocumentFilter Class

DocumentFilter is a class that oversees calls to insertString( ), remove( ), and replace( ) on any subclass of AbstractDocument. It can allow the edit to occur, substitute another edit, or block it entirely. Because all of Swing’s Document classes inherit from AbstractDocument, this means you can attach a DocumentFilter to pretty much any Swing text component. The Document interface does not define a setDocumentFilter( ) method though, so you have to cast the object returned by the getDocument( ) method to AbstractDocument before you can set the DocumentFilter. DocumentFilter was introduced in SDK 1.4.

Here’s how DocumentFilter works. AbstractDocument’s insertString( ), remove( ), and replace( ) methods check for the existence of a DocumentFilter. If there is one, they forward the call to the like-named method of the DocumentFilter object. But the DocumentFilter methods are passed an extra parameter called the FilterBypass. The FilterBypass object has its own insertString( ), remove( ), and replace( ) methods, and these actually change the Document’s content.

It’s important that DocumentFilter methods call FilterBypass methods because an endless calling loop occurs if the Document methods are called. The delegation to the DocumentFilter is “bypassed” in FilterBypass. FilterBypass also provides a getDocument( ) method so the DocumentFilter can examine the contents of the Document before deciding whether to allow an edit.

Constructor

public DocumentFilter( ) ...

Get Java Swing, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.