2012-05-24 3 views
2

Bon, je sais que le titre du poste est très familier. J'ai vu beaucoup de messages à ce sujet, mais aucun d'entre eux ne couvrait le code en Java. J'ai cette classe HyperlinkListener:changer la couleur du lien lorsque vous cliquez sur Java

private void editorpaneHyperlinkUpdate(javax.swing.event.HyperlinkEvent evt) { 
    // TODO add your handling code here: 
    if (evt.getEventType() == 
         HyperlinkEvent.EventType.ACTIVATED) { 
            try { 
             try { 
    java.awt.Desktop.getDesktop().browse(evt.getURL().toURI()); 
              } catch (IOException ex) { 
    Logger.getLogger(MyAssistantGUI.class.getName()).log(Level.SEVERE, null, ex); 
             } 
           catch (URISyntaxException ex) { 
    Logger.getLogger(MyAssistantGUI.class.getName()).log(Level.SEVERE, null, ex); 
         } 
       System.out.println("Open browser: " + evt.getURL()); 

J'ai essayé d'ajouter feuilles de style à mon JEditorPane puis ajouter a:active {color: #f00;}, mais il ne fonctionne pas. Puis j'ai vu dans l'API que Java ne supporte pas a:active/hoover ..etc. Pouvez-vous me donner des suggestions, sur la façon de changer la couleur lorsque l'utilisateur clique sur le lien?

+1

Veuillez utiliser un retrait cohérent et logique pour les blocs de code. Et omettez les «toutes les autres lignes comme un espace blanc» - merci. –

Répondre

4

Dans l'auditeur, vous pouvez obtenir une position dans le texte. Transformez ensuite votre JEditorPane'sDocument en StyledDocument et utilisez getCharacterElement() en passant le décalage que vous avez. Pour le Element, vous pouvez modifier les attributs, par exemple en arrière-plan ou en avant-plan, en utilisant la méthode setCharacterAttributes().

+0

Pouvez-vous me donner un exemple, parce que je n'arrive pas à comprendre comment obtenir la position dans le texte? Je peux obtenir le X et Y où la souris a cliqué, mais comment puis-je spécifier la couleur pour le texte entier du lien? – curious

Questions connexes