как получить содержимое JTextPane с его стилизованным форматом

Я пытаюсь сделать простой текстовый процессор, который редактирует текст, чтобы сделать его жирным, курсивом, подчеркиванием, цветом фона и цветом переднего плана. Проблема в том, что я хочу установить содержимое/текст JTextPane со всеми его отредактированными атрибутами в один объект, чтобы сохранить его в другом классе в качестве поля данных, в котором есть другие поля данных, такие как дата создания и имя документа, данное пользователем.


person Hęŋý Xǿxờ    schedule 04.05.2019    source источник
comment
getText()? docs.oracle.com/javase/ 8/docs/api/javax/swing/   -  person JB Nizet    schedule 04.05.2019
comment
но это возвращает только строку, а не стиль, выполненный на ней   -  person Hęŋý Xǿxờ    schedule 04.05.2019


Ответы (1)


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

Например,

TextPane tp = new JTextPane();
tp.setContentType("text/html");
StringBuilder sb = new StringBuilder();
sb.append("<span style=\"color:red\">"  + Hello red  + "</span>");
sb.append("<span style=\"color:blue\">" + Hello blue + "</span>");
...
tp.setText(sb); // will print text with the style

работает так же в другую сторону,

String txt = tp.getText();
System.print(txt); //wil show html code

Вы можете ссылаться на http://www.java2s.com/Tutorials/Java/Swing_How_to/JTextPane/Style_JTextPane_with_HTML_and_CSS.htm

person Luis Vásquez    schedule 04.05.2019
comment
я думаю, если я не ошибаюсь, пример, который вы мне дали, работает, если я ввожу текст в текстовую панель, но намерение состоит в том, чтобы пользователь вводил текст в текстовую панель через пользовательский интерфейс - person Hęŋý Xǿxờ; 04.05.2019
comment
или, может быть, если есть способ получить контент с его стилем в формате html, но преобразованный в строку, чтобы я мог использовать метод setText() позже, это было бы идеально - person Hęŋý Xǿxờ; 04.05.2019