jtextarea - 将 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 实现这一点?
解决方案
你的方法是错误的。为了实现你想要的,你需要设置你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);
推荐阅读
- python - 在 MinGW 环境中导入一个仍然安装的 PyPi 包
- .net - How can I show HTML formatted inline query
- javascript - 删除事件侦听器并在调整大小时重置 classList 切换
- google-apps-script - 云平台项目对话框
- java - 如何使用 Spring Boot 从自定义查询中返回包含少量字段的自定义列表?
- c# - 自动映射器中一种类型到另一种类型的泛型类
- php - Firebase 查询 PHP
- python - 为什么装饰器不能与内置函数一起使用?
- python - 如何加快 Keras 和 Tensorflow 中模型的加载速度?
- python - Chainer:自定义 sigmoid 激活函数