Java - keyReleased(KeyEvent ke)

 
Vista:

keyReleased(KeyEvent ke)

Publicado por Clayder (70 intervenciones) el 16/03/2007 18:47:15
Hola:

Ya desde hace tiempo estoy intentando hacer algo, pero por mas que trato no encuentro el algoritmo. Bueno lo que quiero hacer tiene que ver con los eventos de teclado, yo lo he estado intentando con el keyReleased pero no se si ese metodo sera el mas adecuado.

Exactamente quiero que mi programa reconozca en un JTextPane, ciertos Strings constantes y que este JTextPane reaccione en el mismo momento en que se tipeo la ultima letra. Asi por ejemplo, fueran mis constantes: gato y perro. Si yo escribiese gato, el JTextPane debe estar atento para que cuando apenas se suelte la "tecla o", esta palabra sea pintada de un color verde por ejemplo, pero si le agrego a la letra "s" al final de "gato", esta se volveria a despintar ya que ahora la palabra completa seria "gatos" y de igual forma si mas adelante se me ocurriese escribir "gato" otra vez.

Yo lo estuve haciendo con el metodo getText(int offset, int length) de la interfaz Document creo:

inicializamdo el offset en:

String exp = "";
int offset = textPane.getCaretPosition() - 1
int length = 1;

exp += document.getText(offset, length);

y evaluando la palabra mediante:

if(exp.equals("gato"))
{
/...pintar la palabra gato.../
}

pero me di cuenta que cuando tipeaba la palabra muy rapido, mi computadora confundia las teclas que estaba presionando por lo que no reconocia las palabras.

Esto me esta trayendo muchos dolores de cabeza, por lo cual les agradeceria me ayudaran a resolverlo.

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:keyReleased(KeyEvent ke)

Publicado por angel (537 intervenciones) el 17/03/2007 14:35:12
Podrias probar a cada vez que se ejecuta el evento.....recojer todo el texto....

String todoTexto = document.getText();

Ahora podrias tener un array o un vector con la lista de elementos que quieras marcar
String[] pMarcar = {"rojo","verde"};

Ahora podrias hacer algo como esto:

for(int i=0;i<pMarcar.length;i++){
int pos = 0;
if((pos=todoTexto.indexOf(pMarcar[i]))!=-1){
//As encontrado la palabra que buscabas
//tienes la poscion en la que esta ..p...y puede saber en que posicion acaba
int posF = pos+pMarcar[i].lenght();
///Ahora puedes hacer lo que quieras con ese texxto....
}
}

Bueno eso es una idea.....habria kizas k desarrollarla un poco....espero k te ayude.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar