JEditorPane удалить границу из ссылки на изображение

У меня есть JEditorPane, который отображает ссылку, содержащую такое изображение:

<a href='http://somesite.com/'>
    <img src='someImage.png' />
</a>

Когда JEditorPane отображает это как HTML, он помещает синюю рамку вокруг изображения, которое я безуспешно пытаюсь удалить.

Я хочу, чтобы внутри jeditorpane это выглядело так: image: (http://randomcloud.net/img/prob/valid.png)

Но JEditorPane отображает это так: image(http://randomcloud.net/img/prob/jeditorpane.png)

Это то, что я пробовал до сих пор, и это все еще не работает

editorPane = new JEditorPane("http://randomcloud.net/ads/index.php?id=1");
StyleSheet style = ((HTMLDocument)editorPane.getDocument()).getStyleSheet();
style.addRule("a img {text-decoration: none; border: none;}");

Любые предложения или идеи?

-Мишель


person Alien595    schedule 16.02.2014    source источник


Ответы (2)


Источник ImageView HTLEditorKit. Как видите, для свойства borderSize установлено значение DEFAULT_BORDER (2 пикселя). Вы можете заменить создание ImageView в своей реализации ViewFactory и переопределить метод, чтобы обеспечить желаемую границу (0, как я понимаю).

protected void setPropertiesFromAttributes() {
    StyleSheet sheet = getStyleSheet();
    this.attr = sheet.getViewAttributes(this);

    // Gutters
    borderSize = (short)getIntAttr(HTML.Attribute.BORDER, isLink() ?
                                   DEFAULT_BORDER : 0);

    leftInset = rightInset = (short)(getIntAttr(HTML.Attribute.HSPACE,
                                                0) + borderSize);
    topInset = bottomInset = (short)(getIntAttr(HTML.Attribute.VSPACE,
                                                0) + borderSize);

    borderColor = ((StyledDocument)getDocument()).getForeground
                  (getAttributes());

    AttributeSet attr = getElement().getAttributes();

    // Alignment.
    // PENDING: This needs to be changed to support the CSS versions
    // when conversion from ALIGN to VERTICAL_ALIGN is complete.
    Object alignment = attr.getAttribute(HTML.Attribute.ALIGN);

    vAlign = 1.0f;
    if (alignment != null) {
        alignment = alignment.toString();
        if ("top".equals(alignment)) {
            vAlign = 0f;
        }
        else if ("middle".equals(alignment)) {
            vAlign = .5f;
        }
    }

    AttributeSet anchorAttr = (AttributeSet)attr.getAttribute(HTML.Tag.A);
    if (anchorAttr != null && anchorAttr.isDefined
        (HTML.Attribute.HREF)) {
        synchronized(this) {
            state |= LINK_FLAG;
        }
    }
    else {
        synchronized(this) {
            state = (state | LINK_FLAG) ^ LINK_FLAG;
        }
    }
}

Я думаю, что синяя рамка - это просто выделение текста. Попробуйте отменить выбор содержимого или используйте jEditorPaneInstance.getCaret().setSelectionVisible(false);

person StanislavL    schedule 17.02.2014
comment
Спасибо! Создал свой собственный ImageView и удалил границу, используя описанный метод. - person Alien595; 22.02.2014

@ Alien595: К тегам img можно добавить атрибут с именем border, равный 0.

Пример:

<a href="your_link.html">
    <img border="0" src="your_image.png"/>
</a>
person cardman    schedule 08.12.2016