基于JAVA即时通讯系统 下载本文

5.2.3 界面设计

登录模块的登录界面主要通过继承JFram类来实现,首先从TestLoginUI入口开始,调用定义登录界面的类LoginUI.java里的showGUI方法,开始绘制界面,方法里定义了Jpanel面板,其中布局规定为流布局,在这个面板上添加了用户状态选择下拉菜单,状态规则绑定在了字符串数组da中,此外,还定义了用户名、密码输入框JTextField ,登录按钮等组件。详细代码见如图12:

图12 登陆界面实现详细代码

登录框参考QQ2013版本设计,从上到下依次是标题栏、版本栏、任务栏,JPanel容器大小设置为373*130,界面大小为380*290,版本栏截取QQ2013登陆界面部分作为背景图片,任务栏背景颜色设置为(60,80,1)。如图10所示:

页 第 15 共 30 页

图10 用户登陆界面

5.2.4 功能实现

登录过程实现的是登录业务的逻辑判断功能,在已经显示的登录界面中输入用户名和密码后,点击“登录”按钮之后代码业务逻辑就会转入登录处理,也就是-ClientThread.java的login方法,这个方法首先定义制定地址和端口的Socket,请求服务器登录,当服务器端返回的值是0时,说明当前用户是合法的用户且是合法的登录,否则返回的是非0数字。当允许登录后,启动客户端线程处理各种操作以及和服务器端通信,之后还要启动和好友聊天的线程ThreadProcess。图11是登录功能的核心实现代码:

图11 登录功能核心代码

页 第 16 共 30 页

登录过程依靠actionPerformed方法来实现。首先判断用户名和密码是否为空,如不为空开始判断用户名和密码是否匹配,如匹配则登录成功,将该用户信息添加到ClientTools里面。图12为登录过程实现代码:

图12 登录过程实现代码

5.3 注册模块实现

5.3.1 流程分析

在登录界面点击“我要注册”钮,当客户端监听到注册动作后开始运行RegistUI类。弹出注册界面,用户填入由6位数字组成的用户名、由6~16位字符组成的密码(密码需重复输入)和20个字符以内的昵称,再点击“头像选择”选项弹出头像选择窗口,选择用户头像,最后填写个人签名,点击“我要注册”钮,由服务器判断是否存在同名或者符合规范,如注册不成功侧根据提示改写注册信息,反之则完成注册。

5.3.2 结构分析

注册模块的类结构除了JFrame等JDK类,主要由RegistUI.java 和RegistMsg.java组成。其中RegistUI.java用来监听事件和定义了注册界面,而实

页 第 17 共 30 页

体类RegistMsg.java用来定义注册用户信息。当新用户注册时要求用户填写相应的信息,填写信息时一定要按规定的格式写,否侧不能执行注册,当新用户注册信息填写成功后信息被封装到RegstMsg.java中,最后由服务器判断是否注册成功。图13为实现类图:

Login-user+RegistUI()调用RegistUI-picture-userID-passWord-rPassWord-show-rm+registUI()+()ChoosePhoto-pic-photos-tbm-listener+choose()协助调用Regist-socket-os-dos-dis-rm+Regist()+regist()RegistMsg协助-userID-password-nickname-sign-photo

图13 注册模块类图

5.3.3 界面设计

注册模块界面从TestRegistUI入口开始,通过调用定义注册的类RegistUI.java里的registUI方法来实现。图14为注册界面部分实现代码:

图14 注册界面部分实现代码

注册窗口大小设置为460*460,自上而下依次是帐号框、密码框、重复密码框、昵称框、头像选择菜单、个性签名框和注册按钮。如图15所示:

页 第 18 共 30 页