Зеркало jtextarea в jtextpane - PullRequest
0 голосов
/ 27 июня 2018

Я пытался отразить JTextArea в JTextPane.

Для JTextArea в JTextArea

JTextArea a = new JTextArea ();
JTextArea b = new JTextArea ();

b.setDocument(a.getDocument());

Причина, по которой я хочу использовать JtextPane, заключается в том, что всякий раз, когда я набираю html-теги в JTextArea, он автоматически форматируется в JTextPane как веб-страница.

Когда я заменил его на JTextPane, он дает мне

Модель должна быть StyledDocument

поэтому я попытался добавить StyledDocument.

StyledDocument doc = (StyledDocument) a.getDocument();  

, что приводит к

javax.swing.text.PlainDocument не может быть приведен к javax.swing.text.StyledDocument

Как мне этого добиться с помощью JtextPane?

Спасибо!

1 Ответ

0 голосов
/ 27 июня 2018

Ваш подход неверен. Чтобы достичь того, что вы хотите, вам нужно настроить JTextPane для хранения HTMLDocument и использовать методы этого HTMLDocument для вставки содержимого вашей JTextArea с помощью чего-то вроде insertHTML или с использованием HTMLEditorKit и его read метода.

Попробуйте что-нибудь подобное:

JTextArea myJta = new JTextArea();
JTextPane myJtp = new JTextPane();
myJtp.setContentType("text/html");
...

public void insertHTML(String html, int location) {
    try {
        HTMLEditorKit kit = (HTMLEditorKit) editor.getEditorKit();
        Document doc = editor.getDocument();
        StringReader reader = new StringReader(html);
        kit.read(reader, doc, location);
    } catch (Exception ex) {
        ex.printStackTrace();
    }
}
...
insertHTML(myJta.getText(),0);
...