|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
[JAVA] Html
fino a che punto java supporta l'html??
è possibile che su uno splash possa mettere il link per un'email???? |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Feb 2003
Città: Salerno
Messaggi: 1390
|
Quote:
scusa.... forse stiamo cercando la stessa risp! che intendi x splash?!?!?! ciauz
__________________
La POTENZA è nulla senza il CONTROLLO! |
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
intendo una JWindow un'immagine e una label con testo con tag html!!!
spero di essermi spiegato!!!!! |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Il supporto ad HTML offerto dalle API "text" di Swing è estetico ma non funzionale.
Direi che la soluzione stia nel far apparire il testo dell'etichetta come un hyperlink, affidarle il cursore HAND_CURSOR, collegarle un MouseListener e invocare alla pressione del mouse l'apertura del programma di posta elettronica. Quest'ultimo passaggio può essere fatto attraverso le API JDIC e l'oggetto Desktop definito in queste ultime oppure usando un ProcessBuilder in abbinamento alla lista di parametri necessari per l'avvio del client di posta elettronica sul sistema operativo in uso. E' anche possibile usare un HTMLDocument al fine di mostrare una pagina HTML (3.2) come splash screen. Non credo tuttavia che il gioco valga la candela: in ogni caso dovresti affidarti a JDIC o ProcessBuilder per l'apertura del client di posta elettronica e otterresti in cambio uno splash screen più complesso da scrivere. |
![]() |
![]() |
![]() |
#5 | ||
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
Quote:
![]() Quote:
avevo pensato ad una cosa del genere...ma ti riferisci proprio alla classe hyperlink? ho provato a collegare alla label un mouseadapter ma il cursore non cambia! in effetti non cambia neanke se lo setto in partenza!!! Uso un LayeredPane attaccato alla Window per lo splash...dipenderà forse da quello???se cambio il cursore alla jwindow funziona...se lo cambio a quello che sta attaccato al layeredpane pare di no!!!suggerimenti? |
||
![]() |
![]() |
![]() |
#6 | ||
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
Quote:
![]() Quote:
il problema è proprio lì!!!se metto una label un button o qualsiasi altra cosa nel content pane di una jwindow il cursore cambia ma non cambia!!!!!!!!! cioè cambia lo stato dell'oggetto...(se stampo il valore di getCursor() si vede che il cursore è cambiato!!!!!!!!) ma il cursore (fisico, visuale...insomma la freccia vera e propria) non cambia affatto!!!!!!!!! ma se al posto di una window uso un frame tutt'ok......!!!!!!!!! non so + che fare... ![]() |
||
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Ho provato con successo a riprodurre il problema che riscontri. Effettivamente il "setCursor" si comporta in modo più bizzarro di quando non dovrebbe. Stando alla documentazione, ha effetto su un componente visibile, abilitato e connesso all'albero di proeizione. Il problema è che, nonostante tutto, esiste una bizantina combinazione di istruzioni che rende insensibile la finestra all'invocazione di setCursor. Qui sotto c'è un'idea di come potresti fare, mutuata dalle immagini con mappa di html:
Codice:
package splash; import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; import java.net.*; import static java.awt.Cursor.getPredefinedCursor; import static java.awt.Cursor.HAND_CURSOR; import static java.awt.Cursor.getDefaultCursor; public class Splash extends MouseInputAdapter implements Runnable { private Rectangle area = new Rectangle(26, 134, 150, 19); private JWindow window = new JWindow(); public Splash() { JLabel label = new JLabel( new ImageIcon(getClass().getResource("/splash.png"))); window.setContentPane(label); window.addMouseListener(this); window.addMouseMotionListener(this); window.pack(); window.setLocationRelativeTo(null); window.setVisible(true); new Thread(this).start(); } public void run() { try { Thread.sleep(5000); } catch(InterruptedException ex) {} finally { dispose(); } } public void mouseMoved(MouseEvent e) { window.setCursor(area.contains(e.getPoint()) ? getPredefinedCursor(HAND_CURSOR) : getDefaultCursor()); } public void mousePressed(MouseEvent e) { if(area.contains(e.getPoint())) { activateLink(); } } private void dispose() { SwingUtilities.invokeLater(new Runnable() { public void run() { window.dispose(); } }); } private void activateLink() { try { Desktop.getDesktop().mail(new URI("mailto:###")); } catch(Exception ex) { ex.printStackTrace(); } } public static void main(String...args) { SwingUtilities.invokeLater(new Runnable() { public void run() { new Splash(); } }); } } La stessa regione è usata per stabilire, durante il movimento del mouse, quale cursore applicare alla finestra. E funziona. Al contrario, un procedimento analogo, in cui sia coinvolto un JWindow su cui sia disegnato direttamente lo splash-screen, risulta inerte a fronte di richieste di mutamento del cursore, pur rispettando tutte le caratteristiche esposte nella documentazione (setEnabled, setVisible e componente proiettato a video nonchè ogni combinazione che mi sia venuta in mente con enableEvents(long)). E' un bel mistero ![]() Ciao. |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
sì infatti!!!anch'io avevo letto la doc e avevo visto che per far funzionare a dovere il metodo setCursor(Cursor) il componente doveva essere enabled displayable e visible...non sai quante prove ho fatto e non capivo...
che poi sto metodo è lo stesso che sia JFrame che JWindow ereditano da Component!!!!!quindi non riuscivo proprio a spiegarmi il motivo per cui con la prima funzionava e con la seconda no!!!! grazie per l'aiuto!!!!!! ciao! |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:34.