2014-02-16 3 views
2

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

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

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

Я хочу, чтобы выглядеть следующим образом изнутри JEditorPane: изображения: (http://randomcloud.net/img/prob/valid.png)

Но это как JEditorPane отображает его: изображение (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;}"); 

Любые предложения или проницательность?

-Michel

ответ

1

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

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);

+0

Спасибо! Создал мой собственный ImageView и удалил границу, используя описанный метод. – Alien595

1

@ Alien595: На IMG теги, вы можете добавить атрибут с именем границы, что 0.

Пример:

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