Newsgroup: it.comp.java
Titolo: JTextArea e perdita del testo selezionato

Gentili iscritti,
In una JTextArea seleziono con il mouse del testo. Succede perň che se
clicco su di un altro componente, il testo selezionato scompaia.
Qualcuno ha per caso qualche suggerimento per far sě che rimanga
selezionato sino al momento in cui non uso il mouse sulla JTextArea,
come in effetti logicamente dovrebbe accadere?
Grazie, un saluto.
--
Paolo Guagliumi - ICQ 46580228
[ newsletter gratuita infosapere ] - 
http://web.tiscali.it/infosapere

 Grazie, un saluto.
Saluto,
Fausto.

Cosa intendi con "uso il mouse"? Dovresti essere un po' piů chiaro...
Cioč io vorrei che rimanesse sempre selezionato il testo sino a che
con il mouse non vi clicco di nuovo sopra. Non č comunque una cosa
essenziale, ma se fosse semplice mi tornerebbe utile. Grazie Fausto
per l'interesse.
Ciao Fausto.



Credo tu possa risolvere il problema richiamando il metodo requestFocus()
sulla tua JTextArea.
Facci sapere...
Fausto.

1 - controlla i colori relativi alla selezione quando l'oggetto č privo di
focus.
2 - puoi intercettare il lost focus e vedere se riesci a salvare la
selezione, per poi reimpostarla sul focusgained.
Per ora mi viene in mente questo.

Per ora mi viene in mente questo.
Grazie a Fausto e a Bob per l'interesse. In realtà quando la JTextArea
perde il focus, comunque la selezione rimane o almeno il testo che era
stato selezionato. Perchè comunque le funzioni ad esempio di taglia,
copia, incolla su quel testo funzionano. Questa è solo una finezza
grafica, cioè fare rimanere evidenziato il testo anche quando ci si
sposta su di un altro controllo.
La mia JTextArea in realtà e' definita come:
Public class UndoableTextArea extends JTextArea implements
UndoableEditListener, FocusListener
e ho provato ad aggiungere i seguenti due metodi:
public void focusGained(FocusEvent fe)
{
 System.out.println("ciao1");
}
public void focusLost(FocusEvent fe)
{
 this.select(this.getSelectionStart(), this.getSelectionEnd());
 System.out.println("ciao2");
}
La compilazione del programma va a buon fine. Eppure in fase di
esecuzione, cliccando dovunque sulla JTextArea o su altri controlli,
con il mouse o tastiera, non entra MAI in questi due metodi
focusGained e focusLost... 
Non e' essenziale, ma proprio non capisco...
Grazie comunque per i preziosi suggerimenti. Un saluto.


 sposta su di un altro controllo.
Sicuro che non sia semplicemente un problema di colore?

Sicuro che non sia semplicemente un problema di colore?
Puo' essere, ora che mi entra dentro ai due metodi focusGained e
focusLost provo a fare... delle prove e vedere. Il codice:
this.select(this.getSelectionStart(), this.getSelectionEnd());
select(getSelectionStart(), getSelectionEnd());
non funziona ma effettivamente ora provo a seguire il tuo consiglio e
a cercare di salvare il colore della selezione e semplicemente
ripristinarlo quando perde il focus, così da vedere appunto se sia
solo un problema di colore che se ne va perdendo il focus.
Grazie ancora "TeleSpallaBob"! (su che frequenze televisive trasmetti?
C'è molta pubblicità sul tuo canale? Eh, eh, scherzo :) ciao ).
Ciao.


Sicuro che non sia semplicemente un problema di colore?
Un super grazie *atomolecolare* ad entrambi, che non so quantificarlo
esattamente ma che sa di un ringraziamento molto grosso, eh, eh.
Grazie a google sono andato a pescare questo messaggio:
http://groups.google.com/groups?q=setselectionvisible&hl=it&selm=6t3c36e418i2c3n64%40simia.chka.de&rnum=6
che e' stato provvidenziale per capire che era sufficiente:
public void focusLost(FocusEvent fe)
{
    this.getCaret().setSelectionVisible(true);
}
In questo modo, quando la JTextArea perde il focus, il testo rimane
ugualmente evidenziato. E' una meraviglia! Grazie ancora Bob e Fausto,
ciao.


 ciao.
Figurati per cosě poco, anzi grazie a te per la riga di codice che mi hai
segnalato. Non sapevo quella cosa; ora si !!! ;)