设计 任务书 文档 开题 答辩 说明书 格式 模板 外文 翻译 范文 资料 作品 文献 课程 实习 指导 调研 下载 网络教育 计算机 网站 网页 小程序 商城 购物 订餐 电影 安卓 Android Html Html5 SSM SSH Python 爬虫 大数据 管理系统 图书 校园网 考试 选题 网络安全 推荐系统 机械 模具 夹具 自动化 数控 车床 汽车 故障 诊断 电机 建模 机械手 去壳机 千斤顶 变速器 减速器 图纸 电气 变电站 电子 Stm32 单片机 物联网 监控 密码锁 Plc 组态 控制 智能 Matlab 土木 建筑 结构 框架 教学楼 住宅楼 造价 施工 办公楼 给水 排水 桥梁 刚构桥 水利 重力坝 水库 采矿 环境 化工 固废 工厂 视觉传达 室内设计 产品设计 电子商务 物流 盈利 案例 分析 评估 报告 营销 报销 会计
 首 页 机械毕业设计 电子电气毕业设计 计算机毕业设计 土木工程毕业设计 视觉传达毕业设计 理工论文 文科论文 毕设资料 帮助中心 设计流程 
垫片
您现在所在的位置:首页 >>计算机毕业设计 >> 文章内容
                 
垫片
   我们提供全套毕业设计和毕业论文服务,联系微信号:biyezuopin QQ:2922748026   
仿qq聊天工具设计源码及说明
文章来源:www.biyezuopin.vip   发布者:毕业作品网站  

服务器:使用Netty构建,负责消息的接收和转发,初衷是考虑到高并发(其实自己玩玩也没多大并发量),Mina和Netty

都是非常好的高并发框架,选择了Netty是考虑到他是一个新生儿,比Mina更有活力和潜力(当然,并不是说Mina

不好),据说两者皆可以达到普通电脑单台并发10万(没亲自尝试过,这数据也是在网上知道的)

客户端:使用Swing技术,选择这个是因为Java用的比较多,上班的时候也没时间来学习新技术,这里主要难点就是界面

的优化,有一大半的时间都花在了优化界面上(为什么这么困难呢:API没有深入去看;百度资料难找),有时

间会重新开贴将我遇到的一些界面优化难点来讲解一下,以便有需要的朋友

数据库:使用的是Oracle数据库(这个没问题,想改就改),这里没有采用任何框架,正好也是自己想复习一下JDBC(框架用多了,基础的东西忘记了)

Tips:1、所有的界面都是重绘过的

2、登陆界面、注册界面、主界面都是继承自JDialog而非JFrame,众所周知,JFrame是用的最多的,但是我们既然

要模仿QQ那就要模仿的像一点儿,QQ登陆以及登陆之后都只有一个系统托盘图标而没有任务栏图标,可能大家

没接触过的话会感到很神奇,JFrame是一定有任务栏图标的,开始尝试着使用过JWindow,但是JWindow有一个

很不好的地方,他在焦点获取方面成很大难题,所以,小小JDialog撑起一片天啊

3、项目中的Dialog是我自己写的一个,很丑,但是用着还可以,基本功能都有(提示框、确认框),而且还可以拓展

为QQ新闻那种右下角提示

登录界面:当时纠结了一下的地方是鼠标进入文字,文字样式变为下划线,因为Java本身没有提供下划线的这种文字样式 (

还是我太笨没找到),所以采用了HTML的语法,毕竟Swing是支持其语法的,至于你们所看到漂亮的按钮和复选框,

那是我自己找的图片(使用Java本身的绘图技术也可以做到,我这里为了图简单,并且性能也会更好一点),大家

在做web项目的时候估计都用过复选框这个控件,它里面可以让你点击复选框后面的文字即可选中复选框,我们这里

没有这个属性,只要自己动手写一下,这样可以有更好的用户体验




注册界面:只有界面优化以及按钮滑入出现边框(大家一看就知道),就不多说了

Tips:可以看到自定义弹出框,嘿嘿,还没到丑到无法直视的地步


主界面:这个界面是使用上中下三部分拼接而成,背景是利用图片将jpanel重绘了,因为jpanel是不可以像jlabel一样

setIcon的,界面优化加布局, 以及Jtree组件的重构,才注册成功的账号拥有默认分组“我的好友”,没有任

何好友

Tips:昵称、签名、好友昵称、好友签名;

鼠标滑过分组以及好友节点的时候会呈现黄颜色,而当单击好友节点进行选中的时候则变为橙色,双击则是打开聊天窗口

Tips:没获取到焦点的时候是一串提示语,获得焦点之后出现搜索界面(搜索功能没有写,思路可以给大家提供一下,类似

QQ那样出现一个搜索面板覆盖掉下面的区域,从搜索框一下单独写一个面板使用cardlayout布局,我这里也是如此,

当搜索的时候将结果展示到面板上并替换掉当前面板)

Tips:对好友分组进行管理,添加、删除、修改以及添加好友到选中分组(默认分组“我的好友”是不允许修改和删除的),如果

添加删除分组则需要通过root根节点来reload以下Jtree以便将新分组将入到列表,因为在我的好友上一层其实还有一个root

节点的,只不过隐藏起来了,而如果是添加删除好友节点,则不需要从root开始,只刷新当前即可

Tips:这里我为了好看加入了三个测试(一个太丑了),删除好友功能没有确认是否将你冲对方的好友列表中移除的确认,会自动

将你从对方的好友也移除掉(确认很简单,传送消息的时候在消息体中加入一个确认变量为true或false即可)

Tips:群组和最近联系人,滚动条重绘是一大难点兼亮点(个人认为)

Tips:添加好友,界面很丑,多多包涵

Tips:请求发起者和接受者予以不同的提示

Tips:对方同意了之后,自己这里会看到提示,当然,如果你的好友列表是展开状态,不要这个友情提示也无所谓(有朋友可

能再想,为什么不监听其父节点是否展开,如果展开就不管,为展开就将其展开,这样是可以实现的,但是当好友很多

的时候展开需要用到循环,这样效率有些低)

Tips:删除分组以及修改分组,当然,删除好友的时候也会有确认提示,以免手误

Tips:界面有少许偷懒,大家莫鄙视


聊天界面:聊天总体控件使用了JFrame而没有采用JDialog,是因为需要随时打开,所以要在任务栏上可视,模仿了QQ的聊天窗

口合并效果(虽然我这里很丑,但是效果达到了),JFrame里面嵌套了JTabbedPane,我这里引入了一个开源Jar包

WEBLAF里面的WebTabbedPane,因为这个地方的优化耗费了很长时间还没能搞定,总是觉着太丑不好看,所以最

后放弃了(大家莫要鄙视,如果大家有好的方法可以指点我一下)

Tips:聊天窗口中难点在于JtextPane的运用(说这个是难点是因为,从jdk1.7开始,竟然没有自动换行这个属性了)、字体样式选

项优化、表情提示框,字体样式选项框就是jcombox的优化,说来惭愧,到现在都没能实现,若有朋友知道如何处理,还请

指点一下

Tips:除了截屏和jcombox未能优化之外,其余的都还能简单处理,这里需要注意的是表情的发送,尤其是图文混合的情况下,当时

在这里纠结了很长一段时间

  全套毕业设计论文现成成品资料请咨询微信号:biyezuopin QQ:2922748026     返回首页 如转载请注明来源于www.biyezuopin.vip  

                 

打印本页 | 关闭窗口
本类最新文章
基于Python的在线自主考试系 基于腾讯云的个人知识库管理系统 基于Android的酒店预定系统
基于matlab变频器控制交流电 基于微信小程序的家校联动平台管理 基于时频分析与自适应滤波技术的多
| 关于我们 | 友情链接 | 毕业设计招聘 |

Email:biyeshejiba@163.com 微信号:biyezuopin QQ:2922748026  
本站毕业设计毕业论文资料均属原创者所有,仅供学习交流之用,请勿转载并做其他非法用途.如有侵犯您的版权有损您的利益,请联系我们会立即改正或删除有关内容!