簡易聊天程式教程(六)主視窗和聊天視窗

2021-07-11 16:59:26 字數 2280 閱讀 9724

主視窗用的是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日凌晨終於揭開神秘面紗,正式上線。隨著小程式正式上線,使用者現在可以通過 搜尋等方式體驗到開發者們開發的小程式了。值得一提的是,小程式提供了顯示在聊天頂部的功能,這意味著使用者在使用小程式的過程中可以快速返回至聊天介面,而在聊天介面也可快速進入小程式,實現小...