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.
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.
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.
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