hay una forma de usar texto enriquecido en java, es decir texto rtf, si no estoy mal es del paquete javax.swing.text.rtf, esto lo que hace es cambiar propiedades del texto que normalmente no podrías hacer en un textArea.
con lo de poner el cursos y que cambie de color la linea sería con eventos del mouse, y del teclado.
Ojala te sirva ese paquete.