Java: получить простой текст с символом новой строки из jEditorPane

У меня есть jEditorPane, основанный на HTML. я узнал, что вы можете использовать:

String text = jEditorPane1.getDocument().getText(0, jEditorPane1.getDocument().getLength());
text = text.replaceAll("(?<!^)\n", "\n<br />");
jEditorPane1.setText("<html>" + text + "</html>");

таким образом я получил текст из области редактирования. и когда я хочу вернуть его в панель редактирования, я просто заменяю символы новой строки на ‹ br />. а потом вернуть обратно.

пока все нормально. но когда я получил текст во второй раз из области редактирования, символов новой строки нет.

как я могу сохранить эти символы новой строки?


person Doomic    schedule 13.08.2011    source источник
comment
Вы намеревались получить текст от jEditorPane, а затем установить текст на jEditorPane1?   -  person Nate W.    schedule 13.08.2011
comment
извините, неправильно написал в вопросе. я изменил его.   -  person Doomic    schedule 13.08.2011
comment
Что такое тип контента? Обсуждение того, как обрабатываются новые строки, см. в разделе DefaultEditorKit.   -  person trashgod    schedule 13.08.2011
comment
тип контента = текст/html. у меня есть jeditorpane, основанный на html.   -  person Doomic    schedule 13.08.2011


Ответы (2)


ПОПРОБУЙТЕ использовать "</p><p>" вместо "<br>" в середине и

jEditorPane1.setText("<html><p>" + text + "</p></html>");
person StanislavL    schedule 13.08.2011
comment
это действительно работает. но это не чудесно. потому что я получил дополнительную новую строку в jeditorpane. однако, когда я получаю текст, я получил 1 символ новой строки. Можно ли сделать так, чтобы тег ‹ p› передвигался только на 1 строку вместо 2? - person Doomic; 13.08.2011

<p style=\"margin-top: 0\">

это сделало работу для меня. спасибо станиславль! я проверил, как обычно работает новая строка в jeditpane в режиме html. это тег p без поля. странная реализация, однако это сработало.

text = text.replaceAll("\n(.*?)(?=(\n|$))", "<p style=\"margin-top: 0\">$1</p>");

это делает реальную работу. он окружает весь текст после \n тегом ‹ p>‹ /p>.

Спасибо за помощь

person Doomic    schedule 13.08.2011
comment
Я думаю, что использование ‹div› вместо ‹p› также должно работать без дополнительного пробела между абзацами. - person Christof Aenderl; 14.03.2014