Foros del Web » Programación para mayores de 30 ;) » Java »

saber coordenadas del caret en jtextpane

Estas en el tema de saber coordenadas del caret en jtextpane en el foro de Java en Foros del Web. pues eso que querria saber como conseguir las coordenadas en las que se encuentra el caret(vamos el cursor que indica donde vas a seguir insertando ...
  #1 (permalink)  
Antiguo 30/03/2009, 09:31
 
Fecha de Ingreso: marzo-2009
Mensajes: 11
Antigüedad: 15 años, 1 mes
Puntos: 0
saber coordenadas del caret en jtextpane

pues eso que querria saber como conseguir las coordenadas en las que se encuentra el caret(vamos el cursor que indica donde vas a seguir insertando codigo)

a ver si me podeis ayudar. muchas gracias
  #2 (permalink)  
Antiguo 30/03/2009, 11:06
 
Fecha de Ingreso: marzo-2009
Mensajes: 11
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: saber coordenadas del caret en jtextpane

por lo que he visto en eclipse la clase caret si que lo tiene implementado. pero en netbeans que es lo que uso no. en fin a ver si me podeis dar una solucion
  #3 (permalink)  
Antiguo 30/03/2009, 13:41
 
Fecha de Ingreso: mayo-2007
Mensajes: 210
Antigüedad: 17 años
Puntos: 8
Respuesta: saber coordenadas del caret en jtextpane

Dentro de la clase JtextPane esta el metodo getCaret ese metodo te devuelve un objeto Caret y dentro de ese objeto enontraras metodo getX y getY que son las coordenadas.

salu2
  #4 (permalink)  
Antiguo 30/03/2009, 14:50
 
Fecha de Ingreso: marzo-2009
Mensajes: 11
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: saber coordenadas del caret en jtextpane

gracias vdpazmino pero eso ya lo mire. creo q asi es como es en eclipse pero en netbeans no esta implementado. ya lo mire. estoy mirando importar la libreria de eclipse pero no la he encontrado (como libreria a secas) todavia.

gracias de todas formas
  #5 (permalink)  
Antiguo 30/03/2009, 15:33
Avatar de darkngel  
Fecha de Ingreso: agosto-2007
Mensajes: 46
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: saber coordenadas del caret en jtextpane

La clase Caret es parte del JDK, independiente del IDE a utilizar (Eclipse, netbeans, jdeveloper, etc.) esta clase como dije esta es en el jdk, revisa la documentacion y veras.
  #6 (permalink)  
Antiguo 30/03/2009, 16:00
 
Fecha de Ingreso: marzo-2009
Mensajes: 11
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: saber coordenadas del caret en jtextpane

no me ha dejado poner enlaces por tema de antiguedad y porst.


darkngel si, estoy de acuerdo. y esta es la documentacion

pero el eclipse tiene su propia clase caret.que es este que digo yo que eredara de la de sun y tiene metodos nuevos como getlocation que devuelve un punto con las coordenadas. que seria lo que yo necesitaba. vamos o cualquier otra solucion, pero al menos a mi no se me ocurre

no me ha dejado poner enlaces por tema de antiguedad y porst.

pero si pones caret sun y caret eclipse se ve claramente. a ver si consigo la libreria q contiene ese caret de eclipse que seria una solucion
  #7 (permalink)  
Antiguo 31/03/2009, 08:25
 
Fecha de Ingreso: mayo-2007
Mensajes: 210
Antigüedad: 17 años
Puntos: 8
Respuesta: saber coordenadas del caret en jtextpane

No tiene mucha logica lo que dices, pero si dices que eclipse tiene esa clase puedes buscar sobre SWT esa libreria sirvio para crear la interfaz grafica de eclipse, es diferente a Swing (jtextpane) que es parte del jdk y que yo sepa no es compatible entre SWT y Swing

salu2
  #8 (permalink)  
Antiguo 31/03/2009, 10:45
 
Fecha de Ingreso: marzo-2009
Mensajes: 11
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: saber coordenadas del caret en jtextpane

vdpazmino yo no se si tiene mucho sentido o no, pero en los documentos de sun y de eclipse es lo que viene. de todas formas no segui ese camino porque sabia que me iba a dar mas problemas que soluciones

bueno al final no he necesitado mirar la biblioteca de eclipse. es mas complicado pero lo he hecho. a todo esto tengo que dar las gracias a otra persona que me indico como hacerlo


teniendo un jtextpane(como era mi caso) la forma es la siguiente:
lo primero hay que completar el metodo caretUpdate(CaretEvent e) de la clase CaretListener
heredando de ella una clase nueva y modificandolo con
int dot = e.getDot();
int mark = e.getMark();

con esto tenemos los parametros del caret(cursor)

el mark en mi caso no lo necesito pero bueno

luego tienes que crear un rectangulo y para poder obtener las coordenadas, algo parecido a esto
Rectangle caretCoords = jTextPane1.modelToView(dot);
y luego con
caretCoords.x
caretCoords.y
consigues las coordenadas. todo ello dentro del metodo careUpdate

al final son 4 lineas. pero oye cuesta lo suyo

aah se me olvidaba.

luego creas en la clase jtextpane un listener del tipo de la clase esta que hemos modificado y añadirle a los listener del jtext pane
algo asi:

caretListenerMod = new CaretListenerMod();
jTextPane1.addCaretListener(caretListenerMod);

Última edición por diealco; 31/03/2009 a las 10:49 Razón: incompleto
  #9 (permalink)  
Antiguo 01/04/2009, 14:02
 
Fecha de Ingreso: marzo-2009
Mensajes: 11
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: saber coordenadas del caret en jtextpane

bueno mi problema no se ha acabado aqui. si esto lo hago por separado(en un proyecto aparte)
en un jframe o jpanel con un jtextpane como os he dicho funciona perfectamente.

pero en mi caso tengo un jpanel q cargo en otro jpanel cuando lo necesito.

pues bien esta linea de codigo:

Rectangle caretCoords = jTextPane1.modelToView(dot);
la ejecuta, pero no crea el rectangulo.(vamos eso es lo que yo creo)
porque en la siguiente linea cuando hago simplemente
System.out.println("Coordenadas en X=" + caretCoords.x);
me da java.lang.NullPointerException

asique sigo sin poder solucionarlo

a ver si alguien me da alguna solucion, un saludo
  #10 (permalink)  
Antiguo 02/04/2009, 08:41
 
Fecha de Ingreso: marzo-2009
Mensajes: 11
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: saber coordenadas del caret en jtextpane

bueno ya esta solucionado, apuntaba a una variable sin inicializar... si esque a veces no miro bien jeje
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 13:16.