Как я могу копировать/вставлять стилизованный текст из/в буфер обмена?

У меня есть JTextPane, и я использую DefaultStyledDocument в качестве текстовой модели. В настоящее время я использую методы copy() и paste() по умолчанию для JTextPane для копирования и вставки, но, как вы знаете, они копируют/вставляют только обычный текст. Например, мне нужно иметь возможность копировать стилизованный текст из браузера и вставлять его в JTextPane, сохраняя стили.

Кто-нибудь знает, как я могу этого добиться?


person Igor    schedule 25.01.2013    source источник


Ответы (1)


Когда содержимое в буфере обмена имеет представление, которое может быть обработано установленным EditorKit, тогда JTextPane автоматически распознает содержимое и соответствующим образом обрабатывает содержимое, обновляя документ.

Например. если вы установите RTFEditorKit и вставите содержимое, скопированное из MS Word (у которого есть вариант text/rtf), содержимое будет обработано правильно.

person StanislavL    schedule 27.01.2013
comment
Я уже установил RTFEditorKit, но копируется только обычный текст. - person Igor; 27.01.2013
comment
Я также пытался вставить таким образом: String clipboardText = getClipboardContents();, но, как видите, я могу получить из буфера обмена только обычный текст без стилей. - person Igor; 27.01.2013
comment
это также зависит от COPY. Где вы скопировали свой контент? RTF поддерживается, например. MS Word, но не поддерживается из FF. Вы также можете ознакомиться с комплектом java-sl.com/advanced_rtf_editor_kit.html. - person StanislavL; 29.01.2013
comment
Пробовал копировать из MS Word и IE. Оба раза у меня вставлялся нестилизованный текст. Можно ли переопределить функцию copy() для включения стилей? - person Igor; 29.01.2013
comment
copy() не может быть переопределен. Это не часть Java, а часть исходного приложения. Единственное, что вы можете сделать, это проверить все доступные варианты и выбрать тот, из которого вы можете извлечь информацию о стилях. Вы можете попробовать AdvancedRTFEditorKit, о котором я упоминал. Для меня копирование/вставка из MS Word работает нормально. - person StanislavL; 30.01.2013