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

getCaretPosition() no tiene en cuenta los tabs

Estas en el tema de getCaretPosition() no tiene en cuenta los tabs en el foro de Java en Foros del Web. Hola. Estoy implementando un editor de sql en mi aplicacion. En la misma, informo (cuando el cursor se actualiza) en que numero de linea y ...
  #1 (permalink)  
Antiguo 07/05/2009, 11:57
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 1 mes
Puntos: 9
getCaretPosition() no tiene en cuenta los tabs

Hola. Estoy implementando un editor de sql en mi aplicacion. En la misma, informo (cuando el cursor se actualiza) en que numero de linea y columna se encuentra.
El problema es que cuando el usuario presiona la tecla tab, getCaretPosition() devuelve la posicion que ocupa el cursor dentro del texto, pero no contempla la cantidad de espacios que se dejaron en blanco.
¿Como modificar este comportamiento?.

Gracias de antemano. Saludos.
__________________
Add, never Remove
  #2 (permalink)  
Antiguo 07/05/2009, 13:20
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: getCaretPosition() no tiene en cuenta los tabs

Lo único que he visto hacer es contar los tabs que tiene la linea antes de la posicion y sumar el equivalente (devuelto por getTabSize() de JTextArea) al numero de columna.

Como hacen aquí: http://www.koders.com/java/fid8C8D57...f%3Ainsert

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #3 (permalink)  
Antiguo 07/05/2009, 14:08
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 1 mes
Puntos: 9
Respuesta: getCaretPosition() no tiene en cuenta los tabs

De donde puedo obtener esa libreria?
__________________
Add, never Remove
  #4 (permalink)  
Antiguo 07/05/2009, 16:32
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 1 mes
Puntos: 9
Respuesta: getCaretPosition() no tiene en cuenta los tabs

De todas formas diste en la clave para que pueda resolverlo. La funcion que implemente es esta, si ves algun error me gustaria que me dijeras asi la perfecciono:
Código java:
Ver original
  1. private int countTabsToSpaces(int start, int length)
  2.     {
  3.         int count = 0;
  4.         int taboffset = 0;
  5.         int tabcount = 0;
  6.         String text = "";
  7.  
  8.         try
  9.         {
  10.             text = getText(start, length);
  11.         }
  12.         catch(BadLocationException e){}
  13.  
  14.         for(int i=0 ; i<length ; i++)
  15.         {
  16.             if(text.charAt(i) == '\t')
  17.             {
  18.                 count += 15 - taboffset;
  19.                 taboffset = 0;
  20.                 tabcount++;
  21.             }
  22.             else
  23.             {
  24.                 taboffset++;
  25.             }
  26.         }
  27.  
  28.         return count - tabcount; // RESTAMOS tabcount PARA EVITAR UNA DOBLE CONTABILIZACION
  29.     }

Gracias.
Saludos.
__________________
Add, never Remove
  #5 (permalink)  
Antiguo 08/05/2009, 00:35
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: getCaretPosition() no tiene en cuenta los tabs

Con sólo eses trozo de código se hace dificil ver si funciona, aunque de buenas a primeras parece que no usas getTabSpaces() asi que el numero de espacios por cada tabulador lo estas poniendo fijo, lo cual no te servirá para todos los casos.

Y de todas formas, tienes que comprobar tú si funciona o no .

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #6 (permalink)  
Antiguo 08/05/2009, 07:26
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 1 mes
Puntos: 9
Respuesta: getCaretPosition() no tiene en cuenta los tabs

Asi es. Estoy usando JTextPane, no tiene la propiedad getTabSpaces(). Use el numero de tabs que tiene predefinido este componente. Estoy buscando la forma de conocer la cantidad de espacios que tiene el JTextPane y tambien de establecer este numero.

Saludos.
__________________
Add, never Remove
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




La zona horaria es GMT -6. Ahora son las 19:23.