?? ? ?前段時間花了不少時間搞了一個較簡單的QQ項(xiàng)目,這里把它發(fā)布出來分型給大家學(xué)習(xí)探討。
?
?? ? ?目前為止該QQ項(xiàng)目實(shí)現(xiàn)如下功能:添加好友到好友列表,可以把好友在不同分類中移動,同時支持離線查找添加好友,離線更換頭像,離線發(fā)送消息,保存所有好友聊天記錄,發(fā)送窗口抖動,查看對方信息,更改/添加信息等。
?
?? ? ?先來看一下項(xiàng)目的部分截圖效果
?
?? ? ? ? ??????????????????????? ??? ?
?? ? ? ? ? ?這個是登陸界面,騰訊QQ的號碼通常是9位,這個版本的QQ號碼是5位,也就是說注冊的時候只能注冊5位號碼,超過5位就會提示出錯
????????????
????????????????????????????????????????????????? ?
???????????????????????????????????????????????????????????????? ?這是注冊界面
?
????????????????????????????????? ??
??????????? 如果已經(jīng)登陸的一個賬號,那么再用此賬號進(jìn)行登錄,將會出現(xiàn)如下提示,防止重復(fù)登錄
????????????
?
?????????? ?
??????????????
?
????????????? 登陸成功后顯示如上界面,可以看到每個分類下的好友列表,這里只添加了兩個作為測試。綠色線框內(nèi)顯示為昵稱和狀態(tài),綠色線框右邊是當(dāng)前四個分類(我的好友,同學(xué),親人,陌生人)當(dāng)前在線人數(shù),機(jī)制為一個線程,當(dāng)有成員上線或下線,線程內(nèi)方法收到通知并且重新繪制當(dāng)前面板,實(shí)時統(tǒng)計在線人數(shù)。消息盒內(nèi)存放當(dāng)前未讀的消息,可以是在線好友發(fā)送的消息,也可以是離線好友發(fā)送的消息,當(dāng)點(diǎn)擊時,會彈出對話框與之進(jìn)行會話。下面的五個功能按鈕分別是查找好友,個人資料,聊天記錄,修改頭像,用戶注銷。
?????????????
?
??????
?
?????? 查找好友時,會出現(xiàn)如上界面。當(dāng)輸入QQ號碼進(jìn)行查找的時候,未找到將會提示“未找到好友”,找到后右邊的添加按鈕會被激活,如果此人已在好友列表中,則無法添加,反之可以添加對方為好友。
???????????? 更換頭像界面
?????????????
?????????????????????????? ???? ?
????????? 聊天窗口,可以更改聊天字體大小,顏色,發(fā)送抖動窗口,查看聊天記錄。
???
????????? 難點(diǎn):在項(xiàng)目中,我實(shí)際體會到很多難點(diǎn),下面舉一些例子
??????????1首先生成好友列表是一個難點(diǎn),需要構(gòu)造自己的JTree,訂制自己的渲染器,重寫里面的方法,記得當(dāng)時為了做這一個功能還專門看了一本書:《Swing高級編程》?
??????????2當(dāng)你要和好友聊天的時候,必須保證一個好友只有一個聊天窗口,而且這么多窗口之間不能出現(xiàn)混亂,具有一定的處理難度。
????????? 3在做的過程中最難的莫過于離線處理的情況。比如現(xiàn)在A要添加B為好友,但是B不在線,A查找到B并且發(fā)出添加好友的請求。這時,又有很多情況。第一種情況,A發(fā)出請求后一直未下線,等待B上線,B上線后可以同意A的好友請求也可以不同意;第二種情況,A發(fā)出請求后下線,B上線,B可以同意A的請求也可以不同意。所以要想做得細(xì)致這些問題都要考慮到,因?yàn)樽铍y的就是業(yè)務(wù)邏輯。我體會到把一件事情做好的品質(zhì)是認(rèn)真,細(xì)致。此時服務(wù)器端就會有很多容器,它們負(fù)責(zé)接收不同的消息對象,而且要做到不能混亂。哪些是離線消息,哪些是在線消息,都要管理好。
??????????4保存所有好友的聊天記錄也不是一件容易的事情,其實(shí)最核心的是考慮到一個map數(shù)據(jù)結(jié)構(gòu),圍繞它做文章,key和value分別對應(yīng)QQ號碼(唯一)和聊天記錄(多余200條自動刷新)。
????????? 5把好友在不同分類中移動有一定難度
???
?????????? 不足:
?????????? 1未完成視頻,語音等功能,難度不大,有待完成。
???????????2不能動態(tài)增加好友分類,難度較大。
?????????? 3未完成自定義上傳頭像圖片的功能,只允許使用系統(tǒng)訂制的。
?????????? 4當(dāng)時未掌握設(shè)計模式,代碼結(jié)構(gòu)較為混亂。
?
?
???????? 包結(jié)構(gòu)
???????????????????????
?
?
?
?
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
