0

我真的需要你的帮助,因为我现在正在尝试一个月来使用各种方法做某事......但没有成功。

我有一个 JTextPane 包含带有图像等的 html 文本。这非常有效。

现在,我有一个 <span> </span> 元素的 id,我想删除它的内容并插入一个组件。

更具体地说,我有: < span id='123' >< img src='url/123.png' /></span > 我想要 < span id='123' >#JLabel</span >

我知道如何:

  • 获取跨度元素:htmlDoc.getElement("123");
  • 在插入符号位置的 JTextPane 中插入 JLabel:jtp.insertComponent(component);

我不知道我该怎么做:

  • 删除 <img/>
  • 将我的组件插入到正确的位置。

谢谢您的帮助 !

4

3 回答 3

1

您知道如何获取 Span 元素,因此以下方法可能会起作用:

  1. Element 类有一个 getStartOffset() 方法,您可以使用它来插入 JLabel。

  2. 看看 HTMLDocument 类。有一个 remove(Element) 方法。

于 2013-05-10T00:50:32.107 回答
0

您可以使用正则表达式来做到这一点。这是一个制作您想要的东西但不处理空格的示例:

<img src='.+?'(/>|></img>)

在您的示例中,如果您忽略空格,它将是这样的:

String html = "< span id='123' ><img src='url/123.png'/>< /span >";
String newValue = html.replaceFirst("<img src='.+?'(/>|></img>)", "myJLabel");

要使其与空格一起使用,只需添加\s*它们可以出现的任何位置。这是一个允许同时<img< img

<\\s*img src='.+?'(/>|></img>)

现在,为了让它按你的需要工作,把其他的\s*放在你认为有必要的地方

要了解有关正则表达式的更多信息,请阅读

于 2013-05-09T22:14:03.843 回答
0

为什么要在 TextPane 中添加 jlabel?

无论如何,由于 HTML 是一种 XML 方言,您可以使用 XML 解析器来组织您的标签并更改内容和属性。

所以你可以通过简单地调用 setText() 来更新你的文本窗格的内容

于 2013-05-09T22:15:28.857 回答