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
— a PlainDocument does 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
DocumentEvent interface does not inherit from
EventObject. Therefore, it does not inherit
the getSource method.
|
| 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.
ElementChange is an interface defined
within the DocumentEvent interface.
|
| EventType getType() | Returns the type of change that occurred.
EventType is a class defined
within the DocumentEvent interface
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 changedUpdate gets called in this example.
Requires this additional source file:
DocumentSizeFilter
|