Hola a todos,
en el caso en el que alguien quiera buscar con gusto algo en un JTextArea:
El TextArea necesita un KeyListener:
jTextArea1.addKeyListener(new java.awt.event.KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == 114) {
seguirbuscando();
}
}
});
En este caso, "palabraclave" es una variable global.
Como alternativa, en lugar de eso, se podría aplicar:
private void seguirbuscando(String palabraclave) {
}
y en el KeyEvent
if (e.getKeyCode() == 114) {
seguirbuscando(palabraclave);
}
incorporar la palabra clave en la llamada del metodo
El metodo seguirbuscando() como sigue:
private void seguirbuscando() {
int posicioncursor = jTextArea1.getCaretPosition();
if (posicioncursor == jTextArea1.getText().length()) {
posicioncursor = 0 -palabraclave.length();
}
posicioncursor = posicioncursor + CursorNext(palabraclave);
jTextArea1.setCaretPosition(posicioncursor);
jTextArea1.select(posicioncursor, posicioncursor + palabraclave.length());
}
Y para llegar a la siguiente referencia esta definido el metodo CursorNext():
private int CursorNext(String busqueda) {
String b;
try {
b = jTextArea1.getText().toLowerCase().substring(jTextArea1.getCaretPosition() + busqueda.length());
} catch (Exception e) {
b = jTextArea1.getText().toLowerCase();
jTextArea1.setCaretPosition(0);
}
int posicioncursor = (busqueda + b.split(busqueda.toLowerCase())[0]).length();
return posicioncursor;
}
El KeyEvent con getKeyCode() 114 representa al boton F3
Saludos