Un componente de texto Swing usa un Document para contener y editar un texto. Los eventos Document ocurren cuando el contenido de un documento cambia de alguna forma. Se le a�ade el oyente de Document al documento del componente, en vez de al propio componente.
�M�todos de Evento Document
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.
�Ejemplos de Manejo de Eventos Document
Dos ejemplos descritos en otras secciones tienen oyentes de document.
- 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.
Ambas secci�n hacen un importante apunte que merece la pena repetir aqu�.
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.
�El interface DocumentEvent
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.