Как ввести в HTML JEditorPane, сохраняя предыдущий текст? - PullRequest
0 голосов
/ 05 октября 2018

Хорошо, ошибка здесь проста, и я полностью понимаю, почему это не работает.По сути, у меня есть JEditorPane, который я использую, потому что мне нужно использовать такие вещи, как <b> и <strike> из HTML, и я хотел добавить текст к тому, что уже было, поэтому я использовал editorPane.setText(editorPane.getText() + "<p>test</p>"); ОднакоПосле небольшой отладки я понял, что это действительно дает мне следующее:

<html>
  <head>

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

Если вы знаете свой HTML, вы знаете, что <p>test</p> не будет отображаться, так как его нет в<body>.Это имеет смысл, поскольку setText(getText() + text) должен объединять только две строки.Как тогда я могу поместить строку выбора в <body>, сохраняя при этом все остальное, что уже находится в теле?

Примечание: Просто чтобы вы зналиформатирование HTML (например, <head>, <html>) помещается туда автоматически, и поэтому все это форматирование уже есть, когда я устанавливаю текст «Hello».

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Использование объекта документа JEditorPane :

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);
}
0 голосов
/ 05 октября 2018

Итак, это решение не очень идеальное, но оно подойдет для моих целей.Что я сделаю, это просто сделаю String и затем добавлю в него все, а затем, как только весь текст войдет, добавлю это к JEditorPane.Кроме того, я думаю, что это можно сделать, разделив с помощью < или /, а затем просто пройдя x через где x - это предустановленное число плюс количество предметов.

...