Document to represent its content.
Document events occur when the content of a document changes in any way.
You attach a document listener to a text component's document,
rather than to the text component itself.
See 
Implementing a Document Filterfor more information.
The following example demonstrates document events on two plain text components.

 
 CTRL-X (cut).
     CTRL-C (copy) and
     CTRL-V (paste).
     
You can find the demo's code in
DocumentEventDemo.java.
Here is the demo's document event handling code:
public class DocumentEventDemo ... {
    ...//where initialization occurs:
    textField = new JTextField(20);
    textField.addActionListener(new MyTextActionListener());
    textField.getDocument().addDocumentListener(new MyDocumentListener());
    textField.getDocument().putProperty("name", "Text Field");
    textArea = new JTextArea();
    textArea.getDocument().addDocumentListener(new MyDocumentListener());
    textArea.getDocument().putProperty("name", "Text Area");
    ...
class MyDocumentListener implements DocumentListener {
    String newline = "\n";
 
    public void insertUpdate(DocumentEvent e) {
        updateLog(e, "inserted into");
    }
    public void removeUpdate(DocumentEvent e) {
        updateLog(e, "removed from");
    }
    public void changedUpdate(DocumentEvent e) {
        //Plain text components do not fire these events
    }
    public void updateLog(DocumentEvent e, String action) {
        Document doc = (Document)e.getDocument();
        int changeLength = e.getLength();
        displayArea.append(
            changeLength + " character" +
            ((changeLength == 1) ? " " : "s ") +
            action + doc.getProperty("name") + "." + newline +
            "  Text length = " + doc.getLength() + newline);
    }
}
insertString or remove methods, or both.
See
Listening for Changes on a Document for details.
The DocumentListener Interface
DocumentListener has no adapter class.
| Method | Purpose | 
|---|---|
| changedUpdate(DocumentEvent) | Called when the style of some of the text in the
     listened-to document changes.
     This sort of event is fired only from a StyledDocument— aPlainDocumentdoes not fire these events. | 
| insertUpdate(DocumentEvent) | Called when text is inserted into the listened-to document. | 
| removeUpdate(DocumentEvent) | Called when text is removed from the listened-to document. | 
Each document event method is passed an object that implements
the DocumentEvent interface.  Typically, this is an
instance of 
DefaultDocumentEvent, defined in AbstractDocument.
| Method | Purpose | 
|---|---|
| Document getDocument() | Returns the document that fired the event.  Note that the DocumentEventinterface does not inherit fromEventObject.  Therefore, it does not inherit
    thegetSourcemethod. | 
| int getLength() | Returns the length of the change. | 
| int getOffset() | Returns the location within the document of the first character changed. | 
| ElementChange getChange(Element) | Returns details about what elements in the document have
    changed and how. ElementChangeis an interface defined
within theDocumentEventinterface. | 
| EventType getType() | Returns the type of change that occurred. EventTypeis a class defined
    within theDocumentEventinterface
    that enumerates the possible
    changes that can occur on a document:
    insert text, remove text, and change text style. | 
| Example | Where Described | Notes | 
|---|---|---|
| DocumentEventDemo | This section | Reports all document events that occur on the documents for both a text field and a text area. One listener listens to both text components and uses a client property on the document to determine which component fired the event. | 
| TextComponentDemo | Listening for Changes on a Document | Updates a change log every time text in the listened-to document changes.
     The document in this example supports styled text,
     so changedUpdategets called in this example.
     Requires this additional source file:DocumentSizeFilter |