将 jtextarea 镜像到 jtextpane



我试图将JTextArea镜像到JTextPane。

对于 JTextArea 到 JTextArea

JTextArea a = new JTextArea ();
JTextArea b = new JTextArea ();
b.setDocument(a.getDocument());

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

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

模型必须是样式文档

所以我尝试添加样式文档。

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

结果是

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

如何使用 JTextPane 实现此目的?

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

最新更新