JTextPane 如何读取和写入图文混排的内容(类似QQ聊天窗口)

jiangtianyin 2010-09-07 07:46:49
用两个JTextPane做的一个类似QQ的聊天窗口,点击发送按钮后读取位于下方的JTextPane的内容(包括图片和文字)然后把内容写到上方的JtextPane中,如果只有文字的话可以使用getText()和setText()方法,但是现在是图文混合的,该怎么读取和写入呢?
...全文
513 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiangtianyinb 2010-09-17
  • 打赏
  • 举报
回复
自己写了一个方法,其中Editor继承自JTextPane,经测试完全可以实现两个JTextPane之间内容的传递

public void copyContent(Editor from, Editor to) {
Vector<String> picVector = new Vector<String>();
int loc = to.getEditorDocument().getLength();
// System.out.println(loc);
for (int i = 0; i < from.getStyledDocument().getRootElements()[0]
.getElement(0).getElementCount(); i++) {
Icon icon = StyleConstants.getIcon(from.getStyledDocument()
.getRootElements()[0].getElement(0).getElement(i)
.getAttributes());
if (icon != null) {
picVector.add(icon.toString());
}
}
int k = 0;
for (int i = 0; i < from.getText().length(); i++) {
if (from.getStyledDocument().getCharacterElement(i).getName()
.equals("icon")) {
to.insertIcon(new ImageIcon(picVector.get(k).toString()));
picVector.get(k++);
} else {
try {
to.getStyledDocument().insertString(to.getText().length(),
from.getStyledDocument().getText(i, 1), null);
} catch (BadLocationException ble) {
ble.printStackTrace();
}
}
}
picVector.clear();

}
jiangtianyin 2010-09-09
  • 打赏
  • 举报
回复
楼上两位是说用下面这种方法吗?(假设消息输入为inputMessage,历史消息为historyMessage)
StyledDocument doc=inputMessage.getStyledDocument();
historyMessage.setStyledDocument(doc);
可是这样用的话,两个JtextPane就共用的同一个 StyledDocument了,只要你在inputMessage中输入内容,historyMessage中也会立即出现相同的内容,可是我需要的是点击发送按钮后把inputMessage中的内容(包括图片和文字)追加到historyMessage中,求解!!!!!
jiangtianyin 2010-09-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 huntor 的回复:]
不是共享一个StyledDocument实例,而是把一个的内容添加到另一个里。
[/Quote]
像我上面说的方法,只要你在下面的JTextPane输入内容,上面的JTextPane的内容也会同步改变,但我要的是先在下面的JTextPane输入内容,点击发送按钮后才把下面的内容追加到上面的JTextPane中
请问到底要如何才能实现我要的效果呢???????
huntor 2010-09-09
  • 打赏
  • 举报
回复
不是共享一个StyledDocument实例,而是把一个的内容添加到另一个里。
泓博 2010-09-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 huntor 的回复:]
通过 StyledDocument操作。
[/Quote]

同意!
huntor 2010-09-07
  • 打赏
  • 举报
回复
通过 StyledDocument操作。
内容概要:本文详细介绍如何通过搭建ELK(Elasticsearch、Logstash、Filebeat、Kibana)日志分析系统,实现对大模型Token中转服务的全链路可观测性管理。系统能够实时追踪每次API调用的性能指标(如首包耗时、总耗时)、Token消耗、费用核算、用户行为及异常请求,解决自建中转服务长期存在的“黑盒”问题,包括费用不清、性能瓶颈难定位、恶意刷量难识别等痛点。文章提供完整的日志结构设计、ELK组件配置方案(可直接复制部署)以及Kibana五大核心可视化看板,覆盖从数据采集、清洗、存储到展示的全流程,适用于个人、团队或企业级AI网关场景。; 适合人群:具备一定运维与开发能力的技术人员,如AI中台工程师、DevOps、私有化部署开发者及企业AI基础设施负责人,尤其适合运营Token代理、模型中转服务的团队; 使用场景及目标:① 实现API调用的精准费用分摊与成本控制;② 定位性能瓶颈与慢请求根源;③ 识别恶意刷量与异常调用行为;④ 构建可审计、可告警、可复盘的生产级可观测体系; 阅读建议:此资源强调结构化日志输出与业务字段定义的重要性,建议读者结合自身中转服务架构,严格按照JSON日志模板实施,并完整配置ELK链路以发挥最大效能,同时关注文中避坑指南以保障系统稳定运行。

62,622

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧