Newsgroup: it.comp.java
Titolo: Selezione testo in JTextArea

Gentili iscritti,
Avendo una JTextArea con parecchio testo dentro, puntando il cursore
in un punto, penso sarebbe comodo che premendo un pulsante venisse
selezionato ed evidenziato automaticamente il testo del paragrafo per
un successivo uso.
La cosa potrebbe essere usata per un paragrafo generico di testo
(suddiviso da un .). Ma nel mio caso specifico se la JTextArea
contiene un testo del tipo:
prima <ciao> prova qui prova </ciao> dopo
e punto il cursore su "qui", vorrei che automaticamente si
selezionasse ed evidenziasse il testo:
<ciao> prova qui prova </ciao>
Qualche suggerimento? Dovrei usare i metodi setSelectionStart e
setSelectionEnd. Ma come trovare la posizione dei caratteri "<" e ">"?
Devo usare il Caret?
Grazie per eventuali "instradamenti", un saluto!
--
Paolo Guagliumi - ICQ 46580228
[ newsletter gratuita infosapere ] - 
http://web.tiscali.it/infosapere

Avendo una JTextArea ...
 
Mi autorispondo incollando il codice funzionante che ho realizzato,
nell'eventualita' che prima o poi possa tornare utile ad altri tramite
google. Ciao.
	// **** restituisce true se la stringa testo termina con
contiene ****
	private boolean selezioneContieneFine(String testo, String
contiene)
	{
		if (testo != null)
			return testo.endsWith(contiene);
		else
			return false;
	}
	// **** restituisce true se la stringa testo inizia con
contiene ****
	private boolean selezioneContieneInizio(String testo, String
contiene)
	{
		if (testo != null)
			return testo.startsWith(contiene);
		else
			return false;
	}
	// **** metodo che consente la selezione di un paragrafo
compreso tra due tag xml ****
	private void azioneSelezionaTagXml()
	{
		String testo; // include la porzione di testo da
esaminare
		boolean uscita = false; // consente di uscire dal
ciclo while
		int posizioneDot = areaTesto.getCaret().getDot(); //
rileva la posizione corrente del cursore
		int salvaPosizioneDotInizio, salvaPosizioneDotFine,
salvaPosizioneDotCentrale;
		salvaPosizioneDotCentrale = posizioneDot; // salva la
posizione dove l'utente ha posizionato il cursore
		while (!uscita)
		{
areaTesto.select(areaTesto.getCaret().getMark(),
areaTesto.getCaret().getDot());
			testo = areaTesto.getSelectedText();
			if (selezioneContieneFine(testo, ">") == true)
// verifica se e' stato raggiunto l'elemento >
			{
				uscita = true;
			}
			else
			{
				posizioneDot = posizioneDot + 1; //
sposta il cursore avanti di una posizione
areaTesto.getCaret().moveDot(posizioneDot); // realizza lo spostamento
del cursore
			}
		}
		salvaPosizioneDotFine = posizioneDot; // individuato
l'estremo destro della selezione
areaTesto.getCaret().setDot(salvaPosizioneDotCentrale);
		posizioneDot = salvaPosizioneDotCentrale;
		uscita = false;
		while (!uscita)
		{
areaTesto.select(areaTesto.getCaret().getDot(),
areaTesto.getCaret().getMark());
			testo = areaTesto.getSelectedText();
			if (selezioneContieneInizio(testo, "<") ==
true) // verifica se e' stato raggiunto l'elemento <
			{
				uscita = true;
			}
			else
			{
				posizioneDot = posizioneDot - 1; //
sposta il cursore indietro di una posizione
areaTesto.getCaret().moveDot(posizioneDot); // realizza lo spostamento
del cursore
			}
		}
		salvaPosizioneDotInizio = posizioneDot; // individuato
l'estremo sinistro della selezione
		areaTesto.select(salvaPosizioneDotInizio,
salvaPosizioneDotFine); // seleziona il testo
		areaTesto.getCaret().setSelectionVisible(true); //
rendi visibile la selezione effettuata
