编辑JEditorPane中的html内容

时间:2013-05-09 22:01:18

标签: java html edit jtextpane

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

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

现在,我有一个< span> < / span>我希望删除它的内容并插入一个组件。

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

我知道如何:

  • 获取span元素:htmlDoc.getElement(“123”);
  • 在插入位置的JTextPane中插入JLabel:jtp.insertComponent(component);

我不知道我怎么做:

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

感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

你知道如何获得Span元素,所以可能会有以下工作:

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

  2. 看看HTMLDocument类。有一个删除(元素)方法。

答案 1 :(得分: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*

现在,为了让它按需要运行,只需将其他{{1}}放在您认为必要的地方

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

答案 2 :(得分:0)

为什么要在TextPane中添加jlabel?

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

因此您只需调用setText()

即可更新Text-Pane的内容