Java聊天程序项目实训记录贴(6)实现用户之间的聊天

【文章声明】 鄙人是大一计算机专业的小白一枚,此博客仅记录项目开发过程,此文章为期末提交的实训任务之一。 如有不当还恳请大佬指出,也希望大佬可以提供更好的思路。

【第一部分:创建消息表和消息类】

【第一步——创建消息表】

主要字段:sender发送人,receiver接收者、message消息内容、send_time发送时间、is_read是否阅读。

【第二步——创建消息类】

把数据表对应的字段匹配好数据类型并设为私有属性,一键生成构造函数和getter、setter方法。

【第二部分:设计出发送面板JPanel】

【第一步——聊天窗口布局好发送面板JPanel】

<运行看看效果>

【第二步——做个简单判断,文本框内有文字才能启用发送按钮】

<运行看看效果>

【第三部分:完善发送按钮的功能】

【第一步——实现插入数据的功能】

创建MessgaeDAO类,先绑定好数据库,再写一个填满message数据表的方法;

和之前UserDao的insert方法是基本一样的,只是这次的参数多一些。

【第二步——写好点击发送按钮的条件】

先判断一下用户是否选择了好友,再对发送的内容做一个限制(数据库里是varchar(200))

再准备好用户名、接受好友、点击时间、发送消息,然后创建一个Messages对象(消息是否已读就先暂时为0),最后调用刚刚写好的insertMessage方法。

【第三步——重写发送方法】

如果好友在线,我们直接把信息发送给好友。之前弄的发送线程已经没有什么作用了......因为选择的好友是不确定的,而且调用很麻烦,可以删掉了。我们在MessageDAO重新写一个发送方法

【第四步——应用发送方法】

因为没有服务器,这程序始终只能在本机运行。所以ip地址和端口我都是写死的。

ip地址就是我电脑的,端口用之前UserDAO的获取用户端口方法就行。

<测试效果>

【第四部分:创建聊天面板】

【第一步——写出聊天面板大概轮廓】

【第二步——将聊天面板放到聊天窗口里面】

这是之前好友列表面板的点击事件,之前只有把选中好友的用户名赋值给聊天面板中全局变量friendName。这次我们要先把好友的用户名先赋值给局部变量a,再判断这个a是不是上次选中的好友。如果不是上次选中的那个好友,那就把这个a赋值给friendName,由于friendName的初始值是"",所以第一次执行的时候不用关闭先前的chatPanel面板,反之,就先关闭先前的面板,再创建当前选中好友的面板。

<运行测试效果>

【第三步——在MessageDAO类补充获取未读消息,设置消息已读的方法】

基本条件:给用户名和好友名

创建一个List<String>,得到String类型的List,到时候再遍历循环得到String类型的单条消息,挨个把消息添加到聊天面板就行。

【第四步——完善聊天面板,把得到好友消息的方法弄到一个每秒执行一次的线程里面,并且把得到的消息列表逐个提取单条消息并添加到聊天面板】

这是我用ai生成并修改的完整代码

【第五步——在聊天窗口里点击发送时,就要给当前的聊天面板添加自己发的消息并应用右对齐的样式】

<最后展示一下效果>

到这里就先告一段落了,今天下午这个作业就要提交,还是有很多遗憾的:

1、添加好友里面没有向对方申请就默认通过,对方要有拒绝成为好友的权利。

2、接收线程名存实亡,没有实现好友在线时 线程接收到消息立即显示到好友聊天面板里。

3、没有未读消息的通知,未读消息只有用户打开好友界面的时间,这个时间是完全不准的。

4、好友ip和端口是写死的,实现的通信范围太过有限。

5、用户没有上传头像、修改昵称的功能,好友列表里也应该要有未读消息的条数以便提醒用户。

我会争取在暑假的时候对这个项目重新完善的(除了4需要服务器外,但我也会学习)

【项目总结】

自己还是能力不足,在做整个聊天程序时,尤其是聊天消息怎么传到面板上这块知识点,我是一片空白的。也因为时间不足了,本篇同时也是最难最重要的一篇很多代码是AI给的大概框架,我再去加以完善。AI给的代码通常有着问题,尤其是在自己知识盲区时要调试很久,有时候一个功能需要花一两个小时解决。要表扬自己的是,这个时候这么枯燥火大还是坚持到了胜利。
虽然这个聊天程序做的马马虎虎,但我认为整个程序80%都是自己一步一步的写,实在触碰到知识盲区了才不停的在AI给的代码缝缝补补。在这一点,我认为我比我其他同学要优秀很多。

最后也是我感触最深的,AI写代码真的很快也很规范。但通常还是有漏洞和逻辑上与自己思路的不一致,修改这个过程大多还是避免不了。人类社会的发展就是把做事的效率提高,所以运用AI是未来的大势所趋。自己能和AI“有多少默契”,将决定了自己未来的高度。在运用AI完善代码这点上,我认为还是不单依赖AI,自己要对基础知识有理解,做东西的思路要清晰,才能不被AI误导。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值