Buscar en TextArea y resaltar la referencia

Iniciado por Adalher, Abril 11, 2019, 05:10:01 PM

Tema anterior - Siguiente tema

0 Miembros y 3 Visitantes están viendo este tema.

Hola a todos,

en el caso en el que alguien quiera buscar con gusto algo en un JTextArea:

El TextArea necesita un KeyListener:
Código: java

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:
Código: java

private void seguirbuscando(String palabraclave) {

}


y en el KeyEvent
Código: java

if (e.getKeyCode() == 114) {
                    seguirbuscando(palabraclave);
                }

incorporar la palabra clave en la llamada del metodo


El metodo seguirbuscando() como sigue:
Código: java

        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():
Código: java

        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
Este es el mayor reproche al pueblo hispanohablante:

Que a pesar de su inteligencia y a pesar de su valentía siempre adoran el poder.