【问题标题】:How to Input Into HTML JEditorPane While Keeping Previous Text?如何在保留先前文本的同时输入 HTML JEditorPane?
【发布时间】:2019-03-11 00:56:06
【问题描述】:

好的,这里的错误很简单,我完全理解为什么这不起作用。基本上,我有一个JEditorPane,我正在使用它,因为我需要使用HTML中的<b><strike>之类的东西,我想将文本添加到已经存在的内容中,所以我使用了editorPane.setText(editorPane.getText() + "<p>test</p>");但是,在做了一些调试之后,我发现这实际上给了我这个:

<html>
  <head>

  </head>
  <body>
    <p>
      Hello
    </p>
  </body>
</html>
<p>test</p>

如果您了解 HTML,您就会知道 &lt;p&gt;test&lt;/p&gt; 不会出现,因为它不在 &lt;body&gt; 中。这是有道理的,因为setText(getText() + text) 应该只连接两个字符串。那么我怎样才能将选择的字符串放在 &lt;body&gt; 中,同时仍然保留正文中已经存在的所有其他内容?

注意:您知道,HTML 格式(如&lt;head&gt;&lt;html&gt;)是自动放在那里的,所以当我将文本设置为“你好”。

【问题讨论】:

  • 您的问题是您尝试将文本连接到 HTML 结构中。您可能想要做的是在现有结构中替换或插入标签。

标签: java html swing concatenation jeditorpane


【解决方案1】:

使用 JEditorPane 的 Document object:

HTMLDocument doc = (HTMLDocument) editorPane.getDocument();
try {
    Element lastElement = doc.getParagraphElement(doc.getLength() - 1);
    doc.insertAfterEnd(lastElement, "<p>test</p>");
} catch (BadLocationException | IOException e) {
    throw new RuntimeException(e);
}

【讨论】:

    【解决方案2】:

    所以,这个解决方案不是很理想,但它适用于我的目的。我要做的就是创建一个String,然后将所有内容添加到其中,然后在所有文本都输入后,将其添加到JEditorPane。另外我想这可以通过&lt;/ 拆分来完成,然后只需将 x 通过其中 x 是预设数字加上有多少项目。

    【讨论】:

    • 您的替代解决方案还没有走远。请参阅我的解决方案以了解如何使用 Patternmatcher。这样您就可以替换所需的任何标签。
    猜你喜欢
    • 2012-04-24
    • 1970-01-01
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    • 2016-11-27
    • 1970-01-01
    • 2010-12-23
    • 2011-01-18
    相关资源
    最近更新 更多