Отметить уже использованные гиперссылки в HTMLEditorKit - PullRequest
0 голосов
/ 13 июля 2020

Я создаю таблицу HTML с помощью Swing HTMLEditorKit. В одном столбце показаны гиперссылки, которые можно выбрать.

Как и в поисковых системах, я хотел бы отметить уже задействованные ссылки (жирным шрифтом или цветом).

Где лучше всего добавить это поведение?

Изменить:

Гилберт, спасибо за подсказку

Похоже, что состояние ссылки не соблюдается. Первая строка addRule не меняет цвет, но сохраняет синий шрифт по умолчанию. Вторая закомментированная строка работает.

    ...
    HTMLEditorKit kit = new HTMLEditorKit();
    StyleSheet css = kit.getStyleSheet();
    if (css.getStyleSheets() == null) {
        StyleSheet css2 = new StyleSheet();
        css2.addRule("a:link {color: #DDDDDD } a:visited {color: #DDDDDD } a:hover {color: #DDDDDD } a:active {color: #DDDDDD } "); 
//          css2.addRule("a {color: #DDDDDD }"); 
        css2.addStyleSheet(css);
        kit.setStyleSheet(css2);
    }       

1 Ответ

0 голосов
/ 16 июля 2020

Этот дал мне решение.

Небольшая модификация работает для меня

    jEditorPane.addHyperlinkListener(new HyperlinkListener() {

            @Override
            public void hyperlinkUpdate(HyperlinkEvent e) {
                HyperlinkEvent.EventType type = e.getEventType();
                
                if (type == HyperlinkEvent.EventType.ACTIVATED) {
                    
                    // mark activated
                    if (e.getSourceElement() != null) {
                        AttributeSet a = e.getSourceElement().getAttributes();
                        AttributeSet anchor = (AttributeSet) a.getAttribute(HTML.Tag.A);
                        if (anchor != null) {
                            //only highlight anchor tags
                            highlightHyperlink(e.getSourceElement());
                        }
                    }
...