Come posso creare una JLabel iperlink (con testo sottolineato) per aprire una nuova jFrame?
Grazie
Come posso creare una JLabel iperlink (con testo sottolineato) per aprire una nuova jFrame?
Grazie
JLabel è un componente che serve a visualizzare qualcosa... un componente "passivo", che non reagisce a nulla (solitamente non si interagisce con le JLabel). Di conseguenza, non c'è nulla di "previsto" per fare ciò che vuoi fare tu (al contrario di componenti attivi, come ad esempio, JTextPane o JEditorPane, che prevendono proprio il meccanismo degli HyperText).
Quindi, prima di procedere valuta attentamente se non sia il caso di cambiare componene.
Se vuoi continuare sulla strada della JLabel e "interagire" con essa dovrai fare tutto a mano.
La prima cosa che puoi fare a livello di rendering è utilizzare il codice HTML per il testo, in modo che la JLabel assuma, quantomento, le caratteristiche tipiche dei link nelle pagine web.
Il secondo passo è quello di registrare un MouseListener sulla JLabel che risponda al "clic" (implementando, quindi, il metodo mouseClicked()).
Il terzo passo è quello di recuperare il testo della JLabel, cercare in esso la parte relativa all'URL da aprire (il testo contenuto nell'attributo "href" del tag <A>), recuperarla, costruire un oggetto URI e passarlo al metodo browse() della classe java.awt.Desktop.
Un eventuale quarto passo consiste nell'implementare anche i metodo mouseEntered() e mouseExited() (sempre di MouseListener) in modo da far cambiare il Cursor sul componente e dare anche un "feedback" visivo all'utente del fatto che lì c'è un link.
Ciao.![]()
Ultima modifica di LeleFT; 30-10-2014 a 14:51
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza