Как я могу напечатать строку в формате RTF на JLabel? - PullRequest
0 голосов
/ 16 марта 2012

У меня есть пользовательский JComponent , который выполняет множество операций рисования.

Они также включают drawStrings для текстовых абзацев, но теперь я хотел бы отформатировать текст (в отдельном окне с помощью jtextpane или другого редактора RTF) (полужирный, размер шрифта, выравнивание, цвет шрифта, списки) и показать этот форматированный текст в моем собственном компоненте.

Я бы хотел сделать это без буферизованных изображений, потому что, если у меня большой jcomponent, заполненный изображениями, я получил бы ошибку переполнения (RAM)

Что-то вроде AttributedString может работать, но как?

Я действительно не знаю, как получить RTF-Text из Jtextpane (или, если есть лучший редактор, пожалуйста, скажите мне) и нарисовать его в "paintComponent (Graphics г) "метод .

Редактор просто используется для простого форматирования текста, а не для презентации (что делается с помощью моего собственного компонента)

Может кто-нибудь помочь мне, пожалуйста?


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

поэтому я создаю AttributeString и затем применяю в нем RTF-форматирование?

Знаете ли вы, как я могу выдавить информацию RTF в соответствующую строку AttributedString? например функция, которая преобразует форматированный текст в строку AttributedString, например

public AttributedString getAttrString(String plainRTF){
   ...
}

Большое спасибо

Ответы [ 2 ]

1 голос
/ 16 марта 2012

Попробуйте этот пользовательский AdvancedRTFEditorKit http://java -sl.com / advanced_rtf_editor_kit.html

0 голосов
/ 16 марта 2012

Вы можете проанализировать структуру базового Документа , чтобы перейти к фактическим элементам.Каждый Элемент имеет набор атрибутов, доступ к которым можно получить с помощью getAttributes () .

Вы можете построить AttributedString, используя document.getText() и применяя соответствующие стили, используя метод AttributedString.addAttribute().

Затем нарисуйте строку на Graphics.Посмотрите этот учебник , который использует TextLayout для визуализации AttributedString.

Посмотрите на styledDocumentToAttributedString() метод здесь .Может быть, уже реализует то, что вам нужно;это зависит от сложности вашей строки.Кроме того, это обсуждение может быть полезным.

...