如何在Swing的JTextPane中的链接标记内的图像周围删除边框?

时间:2019-03-20 16:22:43

标签: swing

JTextPane中使用以下HTML代码时:

Just an image: <img src="image.png" /><br/>
<a href="https://example.net">A link</a><br/>Image inside link:
<a href="https://example.net"><img src="image.png"></a>

您将得到以下结果:

Border around image demo

我添加了一条CSS规则,以使链接颜色变为红色:

StyleSheet css = htmlEditorKit.getStyleSheet();
css.addRule("a { color: red; }");

如您在屏幕快照中所见,这也使图像框也变成了红色,由此我得出结论,正是<a>标签引起了边框的出现。


如何摆脱<a>标签内图片周围的边框?

我尝试使用另一条规则覆盖边界,但这没有用:

css.addRule("img { border: 0; }");

1 个答案:

答案 0 :(得分:2)

看看HTMLEditorKit的代码,您可以看到<img>标签是使用类ImageView呈现的,该类包含以下代码:

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

DEFAULT_BORDER被硬编码为2

请注意,它会检查 HTML 属性。如果未指定HTML属性border,则在链接内时图像的边框为2,否则为零。

一种解决方案是直接在border标签内指定<img>

Image inside link:
<a href="https://example.net"><img src="image.png" border="0"></a>

enter image description here