2012-05-24 3 views
2

Хорошо, я знаю, что заголовок сообщения очень знаком. Я видел много сообщений по этому вопросу, но не они охватывали код на Java. У меня есть этот HyperlinkListener класс:изменить цвет ссылки при нажатии на 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()); 

Я пытался добавить Style-лист на мой JEditorPane, а затем добавить a:active {color: #f00;}, но он не работает. Затем я увидел в API, что java не поддерживает a:active/hoover ..etc. Можете ли вы рассказать мне о том, как изменить цвет, когда пользователь нажимает на ссылку?

+1

Пожалуйста, используйте последовательный и логический отступ для кодовых блоков. И оставьте «каждую другую линию белым пространством» - спасибо. –

ответ

4

В слушателе вы можете получить позицию в тексте. Затем отбросьте JEditorPane'sDocument на номер StyledDocument и воспользуйтесь getCharacterElement(), передав имеющееся у вас смещение. Для Element вы можете изменить атрибуты, например, фон или передний план, используя метод setCharacterAttributes().

+0

Можете ли вы привести мне пример, потому что я не могу понять, как получить позицию в тексте? Я могу получить X и Y, где щелкнула мышь, но как я могу указать цвет для всего текста ссылки? – curious