El interface DocumentListener contiene estos tres métodos:
- void changedUpdate(DocumentEvent)
- Se le llama cuando se modifica el estilo o algo del texto. Este tipo de eventos sólo se generan desde un StyledDocument-- un PlainDocument no genera este tipo de eventos.
- void insertUpdate(DocumentEvent)
- Se le llama cuando se inserta texto en el documento escuchado.
- void removeUpdate(DocumentEvent)
- Se le llama cuando se elimina texto del documento escuchado.
Dos ejemplos descritos en otras secciones tienen oyentes de document:Ambas sección hacen un importante apunte que merece la pena repetir aquí:
- El descrito en Escuchar los Cambios en un Documento actualiza un diario de cambios cada vez que cambia el texto del documento. El código fuente del ejemplo está en TextComponentDemo.java.
- Y el descrito en Usar un Oyente de Document en un Text Field actualiza un valor numérico basado en otros valores introducidos en campos de texto por el usuario. Puedes encontrar el código fuente en TextFieldDemo.java.
Nunca debemos modificar el contenido de un documento desde dentro de un oyente de document. El programa se podría quedar bloqueado. Para evitarlo, podemos usar un documento personalizado para el componente de texto.
Cada método de evento document tiene un sólo parámetros, un ejemplar de una clase que implemente el interface DocumentEvent. Típicamente, el objeto pasado a este método será un ejemplar de DefaultDocumentEvent que está definido en AbstractDocument.Para obener el documento que generó el evento, podemos usar el método getDocument de DocumentEvent. Observa que DocumentEvent no desciende de EventObject como las otras clases de eventos. Por lo tanto, no hereda el método getSource.
Además de getDocument, la clase DocumentEvent proporciona otros tres métodos:
- int getLength()
- Devuelve la longitud del cambio.
- int getOffset()
- Devuelve la posición dentro del documento del primer caracter modificado.
- ElementChange getChange(Element)
- Devuelve detalles sobre qué elementos del documento han cambiado y cómo. ElementChange es un interface definido dentro del interface DocumentEvent.
- EventType getType()
- Devuelve el tipo de cambio que ha ocurrido. EventType es una clase definida dentro del interface DocumentEvent que enumera los posibles cambios que pueden ocurrir en un document: insertar y eliminar texto y cambiar el estilo.