源代码下载链接:http://download.csdn.net/detail/sky453589103/9514686
如果有什么问题,欢迎留言。
客户端的基本功能是根据服务器给出的接口逐步来实现的。客户端的设计流程是清晰的。简化的思考流程如下图所示:
当然,实现的时候就要考虑比较多的细节,比如在注册的时候,注册失败怎么办,登陆的时候,账号密码不匹配怎么办。但总的流程就是这样子的。
从上面的流程可以看出了,客户端的窗口模块分下面几个(附上动作的解析):
1 登陆窗口模块:
登陆窗口需要提供两个输入框,输入用户名和密码。在这个模块中需要执行一部分的输入检测,比如用户名不能为空,密码不能为空等。登陆窗口中,还必须要有一个注册按钮,在用户没有账号的时候,。提供注册的功能,新增用户。注册窗口跟登陆窗口之间可以相互切换,方便用户操作。
登陆窗口的关闭操作比较麻烦。首先,需要判断,用户时候登陆成功,登陆成功就只是释放登陆窗口的资源。如果同时打开了注册窗口,这个注册窗口也必须被关闭。在登陆成功的之后,设置主窗口的用户名,以标志成功。如果没有注册成功,登陆窗口的关闭将会关闭整个程序。
登陆窗口在主窗口执行之前执行,在登陆成功之前,主窗口不能被显示出来。登陆窗口在获取了用户的登陆信息之后,会将信息填入请求信息类中,然后发送给服务器处理。成功就打开主窗口,出错就弹出信息框。
登陆窗口应该显示在屏幕的中间。
2 注册窗口模块:
注册窗口中必须要让用户填写所需的所有的必要信息。目前,只有用户名,密码,性别这三个必要的信息。目前这个模块并没有检查输入的功能,在后续有待加入。注册窗口中必要有一个取消的按钮,提供给用户取消注册这个动作,改善用户体验,同时,关闭注册窗口也能取消这个动作。
执行完注册这个动作之后只会在服务器的数据库中执行这个动作,并不会执行登陆。因此还需要再次执行登陆操作。
注册窗口和登陆窗口之间是模态关系,也就说,不关闭注册窗口,是不能选择登陆窗口的。
注册窗口应该显示在屏幕的中间。
3 聊天窗口模块:
聊天窗口中要有一个输入框,和一个显示消息的文本框,和一个发送信息的按钮。输入框会自动换行,执行自动换行时,会以一个单词为单位来执行换行。显示消息的文本框,需要有发送信息的发送者,时间,以新的一行为开始显示消息文本。
在按下发送信息的按钮的时候,消息文本不管有没发送成功,都会在发送方的窗口显示出来,但不一定会在接收方显示,因为接收方有可能已经下线了。
当消息文本或者输入框超出了文本框的显示范围,需要使用滚动条来滚动显示内容。因为会自动换行,因此只需要垂直滚动条,而不需要水平滚动条。消息文本框中的消息应该是不能被用户修改的。但是可以被用户复制。输入文本框中,也有响应的复制,剪切和粘贴功能。
4 主窗口模块:
主窗口中,第一行显示自己的状态信息,接下来是还有列表,添加好友的按钮。列表中好友的信息包括,好友的名字和好友的状态。每个好友的信息为一行。双击还有的名字就可以打开对应的聊天窗口。如果一方先发送信息过来,主窗口要负责消息的监听,在监听到这类信息的时候先判断与这个还有的聊天窗口是否存在,如果存在就将这个窗口显示在最前,如果不存在就询问是否要和对方进行聊天,否则进行忽略,确认就新建一个新的聊天窗口。
对于新增好友的功能,在用户按下了新增按钮之后需要弹出一个对话框,使用户可以输入想要添加的好友的名字,然后获取这个好友名字并发送给服务器。服务器在处理这个用户名的时候,如果存在这个用户,则为他们添加好友关系,如果不存在则返回出错信息。
删除好友功能,应该以右键菜单的形式出现,当客户单击右键的时候,被单击的行要被选中,并且在选择了删除之后,好友列表中要删除这个好友,服务器端也要删除这两个人之间的关系。