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 页