我试图将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);