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

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