当前位置: 首页 > news >正文

8.3,8.4总结

1.改进渲染

                    // 加载头像图像InputStream inputStream = new ByteArrayInputStream(message.getFileBytes());Image image = new Image(inputStream); // 第二个参数表示是否缓存图片,根据需要设置imageView.setImage(image);// 设置头像视图大小imageView.setFitWidth(50);imageView.setFitHeight(50);// 聊天气泡效果的容器Pane messageBubble = new Pane();messageBubble.setStyle("-fx-background-color: #e0e9ff; -fx-background-radius: 10;");messageBubble.setMaxWidth(200); // 设置最大宽度messageBubble.setPadding(new Insets(5)); // 设置内边距messageBubble.getChildren().add(messageText);

2.修改聊天bug 

之前三个人聊天会有些问题

 //根据message获取getterid,然后再得到对应先线程ServerConnectClientThread serverConnectClientThread=ManageClientThreads.getServerConnectClientThread(message.getGetter());BaseService.GetM(message.getSender(),message);ObjectOutputStream oos=new ObjectOutputStream(serverConnectClientThread.getSocket().getOutputStream());oos.writeObject(message);//转发,如果客户不在线,可以保存到数据库,这样可以实现离线留言Message message1=new Message();message1=message;ObjectOutputStream oos1=new ObjectOutputStream(socket.getOutputStream());message1.setMesType(MessageType.MESSAGE_COMM_MES);oos1.writeObject(message1);

3.完善了,添加好友与请求处理

添加好友改了表,好友申请表和好友列表,能实时更新,还有打开更新。

//界面初始化,我的好友public static void sendupdateListFriend(String user1){Connection conn = null;PreparedStatement stmt = null;ResultSet rs = null;try {Class.forName("com.mysql.cj.jdbc.Driver");conn = DriverManager.getConnection(URL, USER, PASSWORD);// 2. 准备 SQL 查询语句String sql = "SELECT * FROM friendstable WHERE User1 = ?";stmt = conn.prepareStatement(sql);stmt.setString(1, user1); // 设置查询参数// 3. 执行查询rs = stmt.executeQuery();// 4. 处理查询结果while (rs.next()) {//发送过去//*****************************************************}} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}}//界面,我的好友更新public static void sendupdateListFriendEnd(String user1){Connection conn = null;PreparedStatement stmt = null;ResultSet rs = null;try {Class.forName("com.mysql.cj.jdbc.Driver");conn = DriverManager.getConnection(URL, USER, PASSWORD);// 2. 准备 SQL 查询语句String sql = "SELECT * FROM friendstable WHERE User1 = ?";stmt = conn.prepareStatement(sql);stmt.setString(1, user1); // 设置查询参数// 3. 执行查询rs = stmt.executeQuery();// 4. 处理查询结果while (rs.next()) {String user2 = rs.getString("User2");// 这里可以根据需要处理每行数据,例如打印输出或者其他逻辑处理Message message1=new Message();message1.setGetter(user2);BaseService.GetM(user2,message1);try {//清空好友列表的//*****************代码*****************//好友BaseService.sendupdateListFriend(user2);}} catch (IOException e) {throw new RuntimeException(e);}System.out.println(user1 +"初始好友列表有:"+user2);}} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}}

4.展示好友/我的资料

a.左边我的

b.右边好友的

5.聊天记录的建表

表名:chat_records

字段:Sender_id 发送者,Getter_id 接受者,SendTime发送时间,Message_type消息类型,

MessageContent 消息内容

 

 

6.聊天列表的刷新 

a.这是与黄头的聊天

b.点击绿头时,这是绿头的聊天

 

 

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 人像修复-图章仿制工具
  • 【zookeeper 第七篇章】集群搭建 本文章不具体展示搭建过程 后期会单独出一篇文章编写集群搭建
  • 基于Springboot的个人博客系统
  • Stable-Diffusion1.5
  • GitHub Revert Merge Commit的现象观察和对PR的思考
  • 传输层_计算机网络
  • Spring源码-ClassPathXmlApplicationContext的refresh()都做了什么?
  • 无缝编码体验:在PyCharm中高效使用远程文件编辑功能
  • 竞赛报名管理系统asp.net+sqlserver
  • python链接harbor,查询项目,镜像,版本
  • 虚拟机如何使用pxe服务实现自动安装系统
  • 【深度学习实战(52)】混淆矩阵计算
  • HCIE-Datacom题库__填空题
  • 基于Orangepi全志H616学习Python3
  • ValueListenableBuilder 和 addListener 在 ChangeNotifier的区别
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • 【React系列】如何构建React应用程序
  • angular学习第一篇-----环境搭建
  • AWS实战 - 利用IAM对S3做访问控制
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • E-HPC支持多队列管理和自动伸缩
  • Facebook AccountKit 接入的坑点
  • JavaScript对象详解
  • javascript面向对象之创建对象
  • JS变量作用域
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • Linux快速复制或删除大量小文件
  • Magento 1.x 中文订单打印乱码
  • Quartz初级教程
  • Redis 懒删除(lazy free)简史
  • Twitter赢在开放,三年创造奇迹
  • Vue 重置组件到初始状态
  • Vue全家桶实现一个Web App
  • 解析 Webpack中import、require、按需加载的执行过程
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 深度学习入门:10门免费线上课程推荐
  • Nginx实现动静分离
  • ​2020 年大前端技术趋势解读
  • ​2021半年盘点,不想你错过的重磅新书
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • (20)docke容器
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (力扣)1314.矩阵区域和
  • (三十五)大数据实战——Superset可视化平台搭建
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (十六)视图变换 正交投影 透视投影
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (译) 函数式 JS #1:简介
  • .apk 成为历史!