首页 > 解决方案 > 如何删除 Swing 的 JTextPane 中链接标记内的图像周围的边框?

问题描述

在内部使用以下 HTML 代码时JTextPane

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>

您将得到以下结果:

图像演示边框

我添加了一个 CSS 规则来使链接颜色变为红色:

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

正如您在屏幕截图中看到的那样,这也将图像框架变成了红色,由此我得出结论,这<a>是导致边框出现的标签。


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

我试过用另一个规则覆盖边界,但它没有用:

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

标签: swing

解决方案


查看 的代码HTMLEditorKit,您可以看到该<img>标签是使用 class 呈现的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>

在此处输入图像描述


推荐阅读