DOMANDA [JAVA] Trova successivo in String e/o JTextArea

Sergei

Utente Attivo
115
1
Salve gente :)
In questa giornata cupa ho deciso di continuare ad esaurirmi nella creazione del mio piccolo notepad scritto in Java.

Ormai mancano poche cose, una delle quali è la funzione cerca. Ieri mi sono messo a reperire informazioni in rete e sono riuscito ad ottenere un piccolo risultato: se cerco la parola quest'ultima viene evidenziata. Bene, funziona, però se ho un'altra parola nel testo non viene cercata perché la ricerca si ferma solo alla prima parola. Mi spiego meglio. Mettiamo che ho un testo, questo testo esattamente:
C'era una volta una casa era casa era casa era casa.
Ok, ora se cerco casa, il programmi mi evidenzia la prima "casa". Ora, siccome nel testo sono presenti altre 3 parole casa, se clicco su cerca, l'evidenziazione dovrebbe spostarsi sulle altre ma questo ovviamente non avviene. Ecco, il quesito è proprio questo: come si fa a creare quello che in un programma prende il nome di TROVA SUCCESSIVO?
Per realizzare la funzione cerca ho fatto così:
Codice:
if (e.getSource() == cerca) {
            
            String prendiTesto = ta.getText();
            String cercaParola = find.getText();
            int trovato = prendiTesto.indexOf(cercaParola);
            cercaParola.length();
            ta.grabFocus(); // attiva l'evidenziazione
            ta.select(trovato, trovato + cercaParola.length()); // inizio e fine
                                                            // dell'evidenziazione
            ta.setSelectedTextColor(Color.BLACK); // colore INTERNO della
                                                    // scritta evidenziata
Dove ta è la TextArea con dentro il testo e find è la textarea dove inserire la parola da cercare.
Esattamente di cosa avrei bisogno? Non mi viene niente in mente :(
 

Sergei

Utente Attivo
115
1
Se a qualcuno può essere utile ho risolto così:
Codice:
if (e.getSource() == cerca){
            
            String prendiTesto = ta.getText();
            String cercaParola = find.getText();
            index = prendiTesto.indexOf(cercaParola, index+cercaParola.length());
            
            if (index == -1){
                System.out.println("Parola non trovata");
            } else {
                ta.grabFocus(); // attiva l'evidenziazione
                ta.select(index, index + cercaParola.length()); // inizio e fine
                                                            // dell'evidenziazione
                ta.setSelectedTextColor(Color.BLACK); // colore INTERNO della
                                                    // scritta evidenziata
            
            
                System.out.println("Index e': " + index);
}
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!