Cómo escribir un Oyente de Caret

Los eventos de Caret ocurren cuando se mueve el cursor (caret = punto de insercion) en un componente de texto o cuando cambia la selección en un componente de texto. Se puede añadir un oyente de caret a un ejemplar de cualquiera de la subclase de JTextComponent con el método addCaretListener.

Si nuestro programa tiene un cursor personalizado, podríamos encontrar más conveniente añadir un oyente al objeto caret en vez de la componente de texto al que pertenece. Un cursor genera eventos change en vez de eventos caret, por eso necesitaremos escribir un oyente de change en vez de un puente de caret. Puedes ver Cómo escribir un Oyente de Change para más información.

Métodos de Evento Caret

El interface CaretListener sólo tiene un método y por lo tanto no tiene clase adaptadora:
void caretUpdate(CaretEvent)
Se le llama cuando se mueve el cursor de un componente de texto o cuando se modifica la selección en un componente de texto.

Ejemplos de Manejo de Eventos Caret

El ejemplo descrito en How to Use Text Components tiene un oyente de caret que muestra el estado de cursor y de la selección. Podrás encontrar el código fuente en TextComponentDemo.java.

La clase CaretEvent

El método caretUpdate tiene un sólo parámetro, un objeto CaretEvent. Para obtener el componente de texto que generó el evento, se usa el método getSource que CaretEvent hereda de EventObject.

La clase CaretEvent define dos métodos muy útiles:

int getDot()
Devuelve la posición actual del cursor. Si hay texto seleccionado, el cursor marca uno de los finales de la selección.
int getMark()
Devuelve el otro final de la selección. Si no hay nada seleccionado, el valor devuelto por este método es igual al devuelto por getDot

Ozito