QQ交谈小图标代码html,仿qq聊天工具设计源码及说明

服务器:使用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项目的时候估计都用过复选框这个控件,它里面可以让你点击复选框后面的文字即可选中复选框,我们这里

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

0292440a5a34a38b072bf814b748431a.png

e4c4cccd9cfc99d324b5c2cf773bcf84.png

0a19a8b461af68745c5c4742e3bd648a.png

93aa2a9d5fd9090aa1beae15bd028701.png

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

8350a9300e5c6889ef6eb7a65d7ce24f.png

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

feb328ed41a07d865c3f0df568774fc5.png

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

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

何好友

23f9410967e44cc81c06ce8651c7597e.png

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

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

8b4803fdce3a742bf17ba489fb0b6859.png

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

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

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

1a2c6772fad27c1795e407d36e3f0996.png

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

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

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

21467491f6314703905c9e3a2887e966.png

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

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

632ad2e60e1a017c5032ae5e8d92da08.png

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

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

b964df36a75acdd15d1189cd62a6345d.png

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

5cc03ccd2641987dd9f1284e6f4478e2.png

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

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

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

1536a1d6c57474f2f49338222ea25d45.png

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

1dcbdf264da9f5c67b09c1ebf952b459.png

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

c3da17d6afd7b358ed6bcee0a8d4eaf9.png

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

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

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

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

2fac2a0a3345adeab3ebd2e15cf044d1.png

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

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

指点一下

f98f39755fff4a2a2fe7e39aa8884ffc.png

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

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

791e8b0fec5b8a593d37b2a1fce33936.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值