首页 > 解决方案 > 将 jtextarea 镜像到 jtextpane

问题描述

我试图将 JTextArea 镜像到 JTextPane。

对于 JTextArea 到 JTextArea

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

b.setDocument(a.getDocument());

我想使用 JTextPane 的原因是每当我在 JTextArea 中键入 html 标记时,它都会像网页一样在 JTextPane 中自动格式化。

当我用 JTextPane 替换它时,它给了我

模型必须是 StyledDocument

所以我尝试添加 StyledDocument。

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

结果是

javax.swing.text.PlainDocument 不能转换为 javax.swing.text.StyledDocument

如何使用 JTextPane 实现这一点?

标签: jtextareajtextpane

解决方案


你的方法是错误的。为了实现你想要的,你需要设置你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);

推荐阅读