主視窗用的是jlist控制項,在顯示了登陸的跟人資訊之後,接下來就是好友的列表。
為了方便以後拓展 ,我把好友的資訊封裝在friendinformation中,friendinformation類的定義也很簡單的,都能看懂。
下面來逐步分析一下mainwin類:
mainwin中比較重要的是事件的監聽:
好友列表中的右鍵選單的監聽:
jmenuitem item = new jmenuitem("remove");
item.addactionlistener(new actionlistener () catch (ioexception e)
}});
friendlistpopupmenu.add(item);
在因為我的右鍵選單中只有乙個選項,因此寫的很簡單,但是用來舉例,完全足夠了。當選中了這個選項之後,客戶端會生成刪除還有的請求報文傳送給伺服器端,伺服器端hi執行這個動作,如果刪除成功,就返回刪除了之後的好友列表。
好友列表的選定模式應該是單選的,通過下面的函式來設定:
this.friendjlist.setselectionmode(listselectionmodel.single_selection);
好友列表的監聽操作:
this.friendjlist.addmouselistener(new mouselistener()
// getbutton function's return value has three value.
// 1 represent mouse's left key.
// 3 represent mouse's right key.
if (e.getbutton() == 1 && e.getclickcount() >= 2) else
friendjlist.clearselection();
}else if (e.getbutton() == 3 && friendjlist.getselectedindex() >= 0)
}});
省略了的後面的三個函式可以不看,都是空的。
if (e.getbutton() == 3)
getbutton函式會有三個返回值,1代表左鍵,2代表中鍵,3代表右鍵。
這段**,實現的是,如果是右擊一行,這一行也會被選中。
接下來判斷的
1.是不是左鍵雙擊了某一行。如果是,就建立響應的聊天視窗,如果聊天視窗存在就將它顯示出來。
2.是不是右鍵單擊了某一行,如果是,就彈出右鍵選單。
自定義jlist的渲染模式, 需要呼叫setcellrenderer函式才會生效:
class friendjlistrenderer extends jpanel implements listcellrenderer
@override
public component getlistcellrenderercomponent(jlist<? extends friendinformation> list, friendinformation friend,
int index, boolean isselected, boolean cellhasfocus) else
return this;
}}
新增好友的按鈕的事件監聽:
在按下新增好友的按鈕之後會先出現乙個帶輸入框的視窗,在輸入了要新增的好友的名字之後,就可以執行新增好友的操作。
addfriendbutton.addactionlistener(new actionlistener() catch (ioexception e) }}
});
需要注意的是,在登陸操作之後,所有的來自伺服器的響應的訊息都會在startn函式中接收,然後根據響應訊息的code和description做出響應的處理。因為篇幅原因,這不在展開了。
而聊天視窗中,負責的只是訊息文字的新增和傳送,接收資訊的四級操作是在主視窗中進行的。因為在這樣做可以避免同時有多個流在監聽輸入,而造成混亂。
聊天視窗在接收到對方的資訊的時候,會加上當前的系統時間,通過下面**實現:
public void addmessage(string from, string content)
通過date類來獲取當前的系統時間,並格式化訊息,新增到訊息文字框中。 乙個簡易的聊天程式(Socket)
效果圖 服務端server using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.io using s...
簡易聊天程式教程(四)客戶端基本功能
客戶端的基本功能是根據伺服器給出的介面逐步來實現的。客戶端的設計流程是清晰的。簡化的思考流程如下圖所示 當然,實現的時候就要考慮比較多的細節,比如在註冊的時候,註冊失敗怎麼辦,登陸的時候,賬號密碼不匹配怎麼辦。但總的流程就是這樣子的。從上面的流程可以看出了,客戶端的視窗模組分下面幾個 附上動作的解析...
微信小程式正式上線 可置於聊天視窗頂部
歷經一年的等待後,小程式在2017年1月9日凌晨終於揭開神秘面紗,正式上線。隨著小程式正式上線,使用者現在可以通過 搜尋等方式體驗到開發者們開發的小程式了。值得一提的是,小程式提供了顯示在聊天頂部的功能,這意味著使用者在使用小程式的過程中可以快速返回至聊天介面,而在聊天介面也可快速進入小程式,實現小...