![[精品論文]JAVA聊天室論文_第1頁](http://file.renrendoc.com/FileRoot1/2019-7/13/09f21165-9a27-4cad-aeac-2bb19c6b03c5/09f21165-9a27-4cad-aeac-2bb19c6b03c51.gif)
![[精品論文]JAVA聊天室論文_第2頁](http://file.renrendoc.com/FileRoot1/2019-7/13/09f21165-9a27-4cad-aeac-2bb19c6b03c5/09f21165-9a27-4cad-aeac-2bb19c6b03c52.gif)
![[精品論文]JAVA聊天室論文_第3頁](http://file.renrendoc.com/FileRoot1/2019-7/13/09f21165-9a27-4cad-aeac-2bb19c6b03c5/09f21165-9a27-4cad-aeac-2bb19c6b03c53.gif)
![[精品論文]JAVA聊天室論文_第4頁](http://file.renrendoc.com/FileRoot1/2019-7/13/09f21165-9a27-4cad-aeac-2bb19c6b03c5/09f21165-9a27-4cad-aeac-2bb19c6b03c54.gif)
![[精品論文]JAVA聊天室論文_第5頁](http://file.renrendoc.com/FileRoot1/2019-7/13/09f21165-9a27-4cad-aeac-2bb19c6b03c5/09f21165-9a27-4cad-aeac-2bb19c6b03c55.gif)
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
畢業(yè)設(shè)計課程定做 QQ1714879127摘 要IABSTR ACTII前 言11緒論21.1 1.1 關(guān)于Java聊天室概述21.1.1選題的依據(jù)及其課題的意義2 1.1.2開發(fā)語言的選擇32開發(fā)環(huán)境簡介32.1 開發(fā)工具的選擇 42.2關(guān)于JDK1.4 42.3 JAVA開發(fā)環(huán)境的建立43項目概況53.1、功能簡介5 3.2、套接字通信84 概要設(shè)計94.1 聊天室服務器端設(shè)計。94.1.1圖形界面的設(shè)計事件處理104.1.2 實現(xiàn)服務器消息的收發(fā)104.1.3定義用戶的管理104.1.4設(shè)計幫助文檔114.2聊天室客戶端設(shè)計 114.2.1圖形界面以及事件處理 84.22實現(xiàn)消息的收發(fā) 8 4.23偵聽端口的修改配置4.24設(shè)計幫助文檔 9 5詳細設(shè)計165.11.服務器端的界面設(shè)計165.12實現(xiàn)服務器消息的收發(fā)205.13用戶偵聽設(shè)計215.14定義用戶的管理225.15設(shè)計幫助文檔235.2服務器端的設(shè)計265.21.客戶端的界面設(shè)計275.22實現(xiàn)客戶端的收發(fā)消息285.33端口的配置345.44用戶名登錄的修改 37 5.55幫助文檔 39 6. 本章小結(jié)40 參考文獻42結(jié)束語36致 謝37 摘 要摘 要 本系統(tǒng)是java基于c/s模式的聊天室程序。聊天室共分為服務器端和客戶端兩個部分,服務器端程序主要負責偵聽客戶端發(fā)來的消息,客戶端需要登錄到服務器端才能實現(xiàn)正常的聊天功能?;贘ava的聊天室是利用Eclipse開發(fā)包工具進行開發(fā)出的一款網(wǎng)絡(luò)聊天室。這款聊天室是套接字通信開發(fā)采用c/s模式的聊天室程序。聊天室共分為服務器端和客戶端兩個部分,服務器端程序主要負責偵聽客戶端發(fā)來的消息,客戶端需要登錄到服務器端才能實現(xiàn)正常的聊天功能。本文分為七個部分,第一章詳細介紹了J2ME的發(fā)展歷史以及MIDP程序的基本框架生命周期以及手機多媒體的發(fā)展,第二部分介紹了開發(fā)工具的選擇以及開發(fā)環(huán)境的搭建,第三到第五部分是系統(tǒng)的設(shè)計過程包括需求分析,系統(tǒng)的概要設(shè)計和詳細設(shè)計,第六部分是系統(tǒng)測試與發(fā)布。關(guān)鍵詞:JAVA聊天室 AbstractThe development of Handset Video Player is based on the J2ME and uses the Eclipse removable development package tool. This Handset Video Player has used the MIDP2.0 of the J2ME which provides video connection MMAPI (Mobile Media API) that can broadcast and transcribe audio to broadcast video whose format is mpg, wmv and so on. This article divides into seven parts, the first chapter detailed introduces the development history of J2ME, the MIDP procedure basic bone life cycle and the development of handset multimedia, the second part introduces the choose of development tool and the building of development environment, from the third part to the fifth part is the design process of system which is include the demand analysis, the system outline design and the detailed design, the sixth part is about test and the issue of the system .Key word: Handset Video Player;J2ME;MIDPprocedure 1.緒論.1.1 關(guān)于Java聊天室概述1.1.選題的依據(jù)及課題的意義 隨著網(wǎng)絡(luò)信息時代的來臨,INTERNET應用越來越廣泛,人們越來越習慣于在網(wǎng)上獲取和交流信息。據(jù)調(diào)查顯示,80%以上的人上網(wǎng)都會打開聊天工具來聊天,而幾乎每一個年輕人都會去聊天。使用網(wǎng)上聊天已經(jīng)成為現(xiàn)代年輕人一種新的交往方式。 根據(jù)網(wǎng)上調(diào)查,在所有參加網(wǎng)上聊天的大學生中,進聊天室進行聊天的占69.65%,使用網(wǎng)絡(luò)尋呼機進行聊天的占37.93%,還有2.75%的受訪者聲稱自己使用其他方式進行聊天。進聊天室聊天是一種較為公共的聊天方式,而使用網(wǎng)絡(luò)尋呼機則是一種具有排他性的聊天方式,一般能夠用網(wǎng)絡(luò)尋呼機進行聯(lián)絡(luò)的,都是比較熟悉的網(wǎng)友。使用網(wǎng)絡(luò)尋呼機還意味著使用者希望自己的網(wǎng)友隨時與自己聯(lián)系,表現(xiàn)出一種開放性的網(wǎng)上交際觀念。聊天室更適合于陌生人之間進行較為主觀、感興化的討論。所以有大部分的人會進入聊天室聊天,它會給人一個完全自由的聊天世界。 作為一個信息技術(shù)專業(yè)的學生,經(jīng)過幾年大學知識的系統(tǒng)學習,應該對計算機科學與技術(shù)這個名詞有了一定的認識。在這幾年里,我對本專業(yè)學習也有了長足的進步,在畢業(yè)即臨時,我就選擇了自己感興趣的基于API的聊天室這個課題作為我的畢業(yè)設(shè)計及論文寫作,以檢驗幾年來的學習情況。1.2.開發(fā)語言的選擇 聊天室的發(fā)展呈現(xiàn)萬花筒般的發(fā)展,開發(fā)工具可以是asp,php,cgi,vc+,c,java等等,做出的聊天室各有千秋,本人以java為開發(fā)語言,對聊天室進行開發(fā)。相信熟悉Java 演進歷史的人或多或少都聽說過,Java 技術(shù)一開始并非就叫做 Java ,而是叫做OAK ,而且最早的時候就是為了嵌入式系統(tǒng)而設(shè)計的一項產(chǎn)品。后來因為網(wǎng)際網(wǎng)路的發(fā)達,而OAK 的諸多特性剛好又適合用在網(wǎng)路上(例如可移植性、編譯后程序碼很小),因為商標已被注冊的關(guān)系,因此 OAK 被改名成Java ,從此因緣際會地成了網(wǎng)路上的閃亮巨星,并隨著時間越來越成熟,也慢慢地產(chǎn)生了許多非原本預期中的相關(guān)運用。雖然 Java 已經(jīng)被用到許多企業(yè)級軟件上,可是其實骨子里面還是非常適合用在嵌入式系統(tǒng)之中。從上圖可以看到從Java 1.0 發(fā)表之后,Java 就被廣泛地使用在桌上型應用程序以及Applet 的開發(fā)上,但是,從Java 1.1 開始,Java又回到了它一開始的老路-也就是嵌入式系統(tǒng)方面的應用,在當時Sun Microsystems 發(fā)表了Embedded Java 與Personal Java(也有人簡稱為PJava)這兩項規(guī)格。其中Embedded Java 是為了資源十分有限,而且沒有顯示設(shè)備的嵌入式裝置而設(shè)計; Personal Java 則是為了在能夠與網(wǎng)際網(wǎng)路連線、并擁有顯示系統(tǒng)(例如彩色LCD)的消費性電子裝置而設(shè)計。接著Java 的版本演進到Java 2 ,這時為了再明顯區(qū)分各種Java 的應用,所以分割出了J2EE 、J2SE、以及 J2ME 三種版本。所有JAVA版本與其所依據(jù)的虛擬器所堆積起來的結(jié)構(gòu)如圖1.1所示。圖1.1 JAVA各版本結(jié)構(gòu)2開發(fā)環(huán)境簡介2.1 開發(fā)工具的選擇操作系統(tǒng):linux開發(fā)工具:JDK1.4Eclipse、Eclipseme插件2.2 關(guān)于JDK1.4 . JDK是Sun公司分發(fā)的免費Java開發(fā)工具,Java SDK最早叫Java Software Develop Kit,后來改名為JDK,即Java Develop Kit。JDK作為Java開發(fā)工具包,主要用于構(gòu)建在Java平臺上運行的應用程序、Applet 和組件等。 2.3 JAVA開發(fā)環(huán)境的建立為了能夠編寫并運行我們所編寫的JAVA程序,我們需要在自己的本地機器中安裝JDK開發(fā)包,JDK是內(nèi)置各種JAVA開發(fā)工具,JAVA虛擬機,JAVA API的一個壓縮包。(1)從下載J2SDK,最新的版本是1.4.2_08,下載后的JDK是個執(zhí)行文件,我們運行后可直接安裝,缺省的安裝目錄是C:j2sdk1.4.2_08。(2)在電腦中配置環(huán)境變量,點右鍵打開我的電腦屬性,在高級中有個環(huán)境變量,選擇新建系統(tǒng)變量:CLASSPATH,變量值:“C:j2sdk1.4.2_07libtools.jar;C:j2sdk1.4.2_07libdt.jar;”,再新建變量名:PATH,變量值:“C:j2sdk1.4.2_07;C:j2sdk1.4.2_07bin;”。具體設(shè)置如圖2-3所示:圖2.1 系統(tǒng)環(huán)境變量配置(4)選擇一個編譯工具。Eclipse是一款非常優(yōu)秀的開源IDE,非常適合Java開發(fā),由于支持插件技術(shù),受到了越來越多的開發(fā)者的歡迎。最新的Eclipse3.1不但界面做了很大的增強,而且增加了代碼折疊等眾多優(yōu)秀功能,速度也有明顯的提升。配合眾多另人眼花繚亂的插件,完全可以滿足從企業(yè)級Java應用到手機終端Java游戲的開發(fā)。本人選擇了Eclipse作為這次畢業(yè)設(shè)計的工具,選擇Eclipse作為開發(fā)的理由再簡單不過了,占用資源少,JBuilder2005和SunONE Studio 8.0 ME建議標準內(nèi)存1G以上,最低512M,目前國內(nèi)個人電腦一般都達不到這個配置。同時Eclipse目前基本為國內(nèi)開發(fā)Java程序的標準的IDE,使用Eclipse將使手機程序開發(fā)更加簡潔。(5)安裝Eclipse插件,并進行相應的配置5。 3 .項目概況3.、功能簡介本系統(tǒng)是java基于c/s模式的聊天室程序。聊天室共分為服務器端和客戶端兩個部分,服務器端程序主要負責偵聽客戶端發(fā)來的消息,客戶端需要登錄到服務器端才能實現(xiàn)正常的聊天功能。(1)服務器端的主要功能有:a.在特定端口上進行偵聽,等待客戶端連接。b.用戶可以配置服務器的偵聽端口,默認是8889。c.可以向已經(jīng)連接的客戶端發(fā)送體統(tǒng)消息。d.統(tǒng)計在線人數(shù)。e.停止服務時,斷開所有的用戶連接。 (2)客戶端的主要功能有:a.連接到已經(jīng)開啟聊天服務的服務端。b.用戶可以配置要連接的服務器IP地址和端口號。c.用戶可以配置連接后的用戶名。d.服務器開啟時,用戶可以隨時登錄與注消。c.用戶可以想所有的人或者指定的個人發(fā)送消息。3.2、套接字通信套接字通信(socket)是網(wǎng)絡(luò)的基本通信單元,又稱為端口,通常用來實現(xiàn)客戶方和服務方的連接。網(wǎng)絡(luò)上的兩個程序通過雙向的連接實現(xiàn)數(shù)據(jù)的交換,實現(xiàn)雙方通信前鏈路的每一端都建立一個socket,通過對socket的讀寫操作實現(xiàn)網(wǎng)絡(luò)的通信功能。socket通信的過程主要有:創(chuàng)建socket,打開連接到socket的輸入流和輸出流,按照一定的協(xié)議對socket進行讀寫操作,關(guān)閉socket這四個步驟,通過這個四個步驟可以完成一般的socket通信。為了完成socket通信,包中提供了socket和serverSocket這兩個類,它們分別用來表示雙向連接的客戶端和服務器斷,它們的構(gòu)造函數(shù)有: Socket() 通過系統(tǒng)默認類型的 SocketImpl 創(chuàng)建未連接套接字 Socket(InetAddress address, int port) 創(chuàng)建一個流套接字并將其連接到指定 IP 地址的指定端口號。 Socket(InetAddress address, int port, InetAddress localAddr, int localPort) 創(chuàng)建一個套接字并將其連接到指定遠程端口上的指定遠程地址。 Socket(Proxy proxy) 根據(jù)不管其他設(shè)置如何都應使用的指定代理類型(如果有),創(chuàng)建一個未連接的套接字。 protected Socket(SocketImpl impl) 創(chuàng)建帶有用戶指定的 SocketImpl 的未連接 Socket。 Socket(String host, int port) 創(chuàng)建一個流套接字并將其連接到指定主機上的指定端口號。 Socket(String host, int port, InetAddress localAddr, int localPort) 創(chuàng)建一個套接字并將其連接到指定遠程主機上的指定遠程端口。其中端口號涉及到一個分配的問題,TCP/IP將端口號分成了兩個部分,少量的作為保留端口,端口號小于256,以全局方式分配給服務進程。因此每一個標準服務器都擁有一個全局公認的端口,即使在不同的機器上其端口號也是不同的。對于常見的端口 號主要有:80端口提供www服務,23提供ftp服務,110提供pop服務。剩余的為自由端口, 4.概要設(shè)計服務器端的程序客戶端的程序端口號:8889IP:2設(shè)置IP與端口號IP:2端口號:8889建立連接 本系統(tǒng)是java基于c/s模式的聊天室程序。聊天室共分為服務器端和客戶端兩個部分,服務器端程序主要負責偵聽客戶端發(fā)來的消息,客戶端需要登錄到服務器端才能實現(xiàn)正常的聊天功能。 4.1、聊天室服務器端設(shè)計。(1)圖形界面的設(shè)計事件處理。調(diào)用java.swing和java.awt包進行圖形界面處理和java.swing.event與java.awt.event事件的偵聽處理。(2)實現(xiàn)服務器消息的收發(fā)。分別定義向所有用戶或某一個用戶發(fā)送消息的方法。(3)定義用戶的管理定義添加用戶,刪除用戶,返回用戶數(shù)目,根據(jù)用戶名查找用戶,根據(jù)索引查找用戶。(4)設(shè)計幫助文檔單擊幫助按鈕,彈出一對話框顯示本系統(tǒng)的有關(guān)信息.4.2聊天室客戶端設(shè)計(1)圖形界面以及事件處理 調(diào)用java.swing和java.awt包進行圖形界面處理和java.swing.event與java.awt.event事件的偵聽處理。(2)實現(xiàn)消息的收發(fā)分別定義向所有用戶或某一個用戶發(fā)送消息的方法。(3)偵聽端口的修改配置用戶對所要連接的服務器IP及偵聽端口進行修改配置(4)設(shè)計幫助文檔 單擊幫助按鈕,彈出一對話框顯示本系統(tǒng)的有關(guān)信息.為用戶提供信息幫助。5詳細設(shè)計 5.1服務器端的設(shè)計5.11.服務器端的界面設(shè)計 界面設(shè)計在應用程序很重要。造就一款成功的聊天室軟件,拋開其他各種因素不談,主菜單的設(shè)計非常重要,其關(guān)鍵是可用性。界面的可用性是指高效、易用、易學、易記。如果用戶界面不友好,即使用戶對其感興趣,由于菜單的原因使缺乏人性化設(shè)置,用戶也不會再使用這個軟件。一個友好的界面是非常關(guān)鍵的,界面設(shè)計必須在軟件設(shè)計時就進行事件添加和事件偵聽和事件處理。調(diào)用serverlisten()來實現(xiàn)服務端用戶上線和下線的偵聽,調(diào)用serverReceive()來實現(xiàn)服務器的消息收發(fā)。 服務器端的界面如下: 圖1 服務器端界面效果 服務器界面代碼實現(xiàn)如下: public class ChatClient extends JFrame implements ActionListenerString ip = 2;/連接到服務端的ip地址int port = 8888;/連接到服務端的端口號String userName = 梅山古道;/用戶名int type = 0;/0表示未連接,1表示已連接Image icon;/程序圖標JComboBox combobox;/選擇發(fā)送消息的接受者JTextArea messageShow;/客戶端的信息顯示JScrollPane messageScrollPane;/信息顯示的滾動條JLabel express,sendToLabel,messageLabel ;JTextField clientMessage;/客戶端消息的發(fā)送JCheckBox checkbox;/悄悄話JComboBox actionlist;/表情選擇JButton clientMessageButton;/發(fā)送消息JTextField showStatus;/顯示用戶連接狀態(tài)Socket socket;ObjectOutputStream output;/網(wǎng)絡(luò)套接字輸出流ObjectInputStream input;/網(wǎng)絡(luò)套接字輸入流ClientReceive recvThread;/建立菜單欄JMenuBar jMenuBar = new JMenuBar(); /建立菜單組JMenu operateMenu = new JMenu (操作(O); /建立菜單項JMenuItem loginItem = new JMenuItem (用戶登錄(I);JMenuItem logoffItem = new JMenuItem (用戶注銷(L);JMenuItem exitItem=new JMenuItem (退出(X);JMenu conMenu=new JMenu (設(shè)置(C);JMenuItem userItem=new JMenuItem (用戶設(shè)置(U);JMenuItem connectItem=new JMenuItem (連接設(shè)置(C);JMenu helpMenu=new JMenu (幫助(H);JMenuItem helpItem=new JMenuItem (幫助(H);/建立工具欄JToolBar toolBar = new JToolBar();/建立工具欄中的按鈕組件JButton loginButton;/用戶登錄JButton logoffButton;/用戶注銷JButton userButton;/用戶信息的設(shè)置JButton connectButton;/連接設(shè)置JButton exitButton;/退出按鈕/框架的大小Dimension faceSize = new Dimension(400, 600);JPanel downPanel ;GridBagLayout girdBag;GridBagConstraints girdBagCon;public ChatClient()init();/初始化程序/添加框架的關(guān)閉事件處理this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.pack();/設(shè)置框架的大小this.setSize(faceSize);/設(shè)置運行時窗口的位置Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();this.setLocation( (int) (screenSize.width - faceSize.getWidth() / 2, (int) (screenSize.height - faceSize.getHeight() / 2);this.setResizable(true);this.setTitle(聊天室客戶端); /設(shè)置標題/程序圖標/icon = getImage(/home/asd0709/lijie/jsp/liaotianshi/src/ChatServer/lily.gif);/this.setIconImage(icon); /設(shè)置程序圖標show();/為操作菜單欄設(shè)置熱鍵VoperateMenu.setMnemonic(O);/為用戶登錄設(shè)置快捷鍵為ctrl+iloginItem.setMnemonic (I); loginItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_I,InputEvent.CTRL_MASK);/為用戶注銷快捷鍵為ctrl+llogoffItem.setMnemonic (L); logoffItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_L,InputEvent.CTRL_MASK);/為退出快捷鍵為ctrl+xexitItem.setMnemonic (X); exitItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_X,InputEvent.CTRL_MASK);/為設(shè)置菜單欄設(shè)置熱鍵CconMenu.setMnemonic(C);/為用戶設(shè)置設(shè)置快捷鍵為ctrl+uuserItem.setMnemonic (U); userItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_U,InputEvent.CTRL_MASK);/為連接設(shè)置設(shè)置快捷鍵為ctrl+cconnectItem.setMnemonic (C); connectItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_C,InputEvent.CTRL_MASK);/為幫助菜單欄設(shè)置熱鍵HhelpMenu.setMnemonic(H);/為幫助設(shè)置快捷鍵為ctrl+phelpItem.setMnemonic (H); helpItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_H,InputEvent.CTRL_MASK);/* * 程序初始化函數(shù) */public void init()Container contentPane = getContentPane();contentPane.setLayout(new BorderLayout();/添加菜單欄operateMenu.add (loginItem);operateMenu.add (logoffItem);operateMenu.add (exitItem);jMenuBar.add (operateMenu); conMenu.add (userItem);conMenu.add (connectItem);jMenuBar.add (conMenu);helpMenu.add (helpItem);jMenuBar.add (helpMenu); setJMenuBar (jMenuBar);/初始化按鈕loginButton = new JButton(登錄);logoffButton = new JButton(注銷);userButton = new JButton(用戶設(shè)置 );connectButton = new JButton(連接設(shè)置 );exitButton = new JButton(退出 );/當鼠標放上顯示信息loginButton.setToolTipText(連接到指定的服務器);logoffButton.setToolTipText(與服務器斷開連接);userButton.setToolTipText(設(shè)置用戶信息);connectButton.setToolTipText(設(shè)置所要連接到的服務器信息);/將按鈕添加到工具欄toolBar.add(userButton);toolBar.add(connectButton);toolBar.addSeparator();/添加分隔欄toolBar.add(loginButton);toolBar.add(logoffButton);toolBar.addSeparator();/添加分隔欄toolBar.add(exitButton);contentPane.add(toolBar,BorderLayout.NORTH);checkbox = new JCheckBox(悄悄話);checkbox.setSelected(false);actionlist = new JComboBox();actionlist.addItem(微笑地);actionlist.addItem(高興地);actionlist.addItem(輕輕地);actionlist.addItem(生氣地);actionlist.addItem(小心地);actionlist.addItem(靜靜地);actionlist.setSelectedIndex(0);/初始時loginButton.setEnabled(true);logoffButton.setEnabled(false);/為菜單欄添加事件監(jiān)聽loginItem.addActionListener(this);logoffItem.addActionListener(this);exitItem.addActionListener(this);userItem.addActionListener(this);connectItem.addActionListener(this);helpItem.addActionListener(this);/添加按鈕的事件偵聽loginButton.addActionListener(this);logoffButton.addActionListener(this);userButton.addActionListener(this);connectButton.addActionListener(this);exitButton.addActionListener(this);combobox = new JComboBox();combobox.insertItemAt(所有人,0);combobox.setSelectedIndex(0);messageShow = new JTextArea();messageShow.setEditable(false);messageShow.setLineWrap(true);/messageShow.getWrapStyleWord();/添加滾動條messageScrollPane = new JScrollPane(messageShow,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);messageScrollPane.setPreferredSize(new Dimension(400,400);messageScrollPane.revalidate();clientMessage = new JTextField(23);clientMessage.setEnabled(false);clientMessageButton = new JButton();clientMessageButton.setText(發(fā)送);/添加系統(tǒng)消息的事件偵聽clientMessage.addActionListener(this);clientMessageButton.addActionListener(this);sendToLabel = new JLabel(發(fā)送至:);express = new JLabel( 表情: );messageLabel = new JLabel(發(fā)送消息:);downPanel = new JPanel();girdBag = new GridBagLayout();downPanel.setLayout(girdBag);girdBagCon = new GridBagConstraints();girdBagCon.gridx = 0;girdBagCon.gridy = 0;girdBagCon.gridwidth = 5;girdBagCon.gridheight = 2;girdBagCon.ipadx = 5;girdBagCon.ipady = 5;JLabel none = new JLabel( );girdBag.setConstraints(none,girdBagCon);downPanel.add(none);girdBagCon = new GridBagConstraints();girdBagCon.gridx = 0;girdBagCon.gridy = 2;girdBagCon.insets = new Insets(1,0,0,0);/girdBagCon.ipadx = 5;/girdBagCon.ipady = 5;girdBag.setConstraints(sendToLabel,girdBagCon);downPanel.add(sendToLabel);girdBagCon = new GridBagConstraints();girdBagCon.gridx =1;girdBagCon.gridy = 2;girdBagCon.anchor = GridBagConstraints.LINE_START;girdBag.setConstraints(combobox,girdBagCon);downPanel.add(combobox);girdBagCon = new GridBagConstraints();girdBagCon.gridx =2;girdBagCon.gridy = 2;girdBagCon.anchor = GridBagConstraints.LINE_END;girdBag.setConstraints(express,girdBagCon);downPanel.add(express);girdBagCon = new GridBagConstraints();girdBagCon.gridx = 3;girdBagCon.gridy = 2;girdBagCon.anchor = GridBagConstraints.LINE_START;girdBag.setConstraints(actionlist,girdBagCon);downPanel.add(actionlist);girdBagCon = new GridBagConstraints();girdBagCon.gridx = 4;girdBagCon.gridy = 2;girdBagCon.insets = new Insets(1,0,0,0);girdBag.setConstraints(checkbox,girdBagCon);downPanel.add(checkbox);girdBagCon = new GridBagConstraints();girdBagCon.gridx = 0;girdBagCon.gridy = 3;girdBag.setConstraints(messageLabel,girdBagCon);downPanel.add(messageLabel);girdBagCon = new GridBagConstraints();girdBagCon.gridx = 1;girdBagCon.gridy = 3;girdBagCon.gridwidth = 3;girdBagCon.gridheight = 1;girdBag.setConstraints(clientMessage,girdBagCon);downPanel.add(clientMessage);girdBagCon = new GridBagConstraints();girdBagCon.gridx = 4;girdBagCon.gridy = 3;girdBag.setConstraints(clientMessageButton,girdBagCon);downPanel.add(clientMessageButton);showStatus = new JTextField(35);showStatus.setEditable(false);girdBagCon = new GridBagConstraints();girdBagCon.gridx = 0;girdBagCon.gridy = 5;girdBagCon.gridwidth = 5;girdBag.setConstraints(showStatus,girdBagCon);downPanel.add(showStatus);contentPane.add(messageScrollPane,BorderLayout.CENTER);contentPane.add(downPanel,BorderLayout.SOUTH);/關(guān)閉程序時的操作this.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)if(type = 1)DisConnect();System.exit(0););/* * 事件處理 */public void actionPerformed(ActionEvent e) Object obj = e.getSource();if (obj = userItem | obj = userButton) /用戶信息設(shè)置/調(diào)出用戶信息設(shè)置對話框UserConf userConf = new UserConf(this,userName);userConf.show();userName = userConf.userInputName;else if (obj = connectItem | obj = connectButton) /連接服務端設(shè)置/調(diào)出連接設(shè)置對話框ConnectConf conConf = new ConnectConf(this,ip,port);conConf.show();ip = conConf.userInputIp;port = conConf.userInputPort;else if (obj = loginItem | obj = loginButton) /登錄Connect();else if (obj = logoffItem | obj = logoffButton) /注銷DisConnect();showStatus.setText();else if (obj = clientMessage | obj = clientMessageButton) /發(fā)送消息SendMessage();clientMessage.setText();else if (obj = exitButton | obj = exitItem) /退出int j=JOptionPane.showConfirmDialog(this,真的要退出嗎?,退出,JOptionPane.YES_OPTION,JOptionPane.QUESTION_MESSAGE);if (j = JOptionPane.YES_OPTION)if(type = 1)DisConnect();System.exit(0);else if (obj = helpItem) /菜單欄中的幫助/調(diào)出幫助對話框Help helpDialog = new Help(this);helpDialog.show();public void Connect()trysocket = new Socket(ip,port);catch (Exception e)JOptionPane.showConfirmDialog(this,不能連接到指定的服務器。n請確認連接設(shè)置是否正確。,提示,JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE);return;tryoutput = new ObjectOutputStream(socket.getO
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 冰雪旅游項目2025年投資可行性區(qū)域旅游市場前景研究報告
- 智慧社區(qū)2025年大數(shù)據(jù)精準營銷模型構(gòu)建成果鑒定與社區(qū)服務創(chuàng)新報告
- 直接展示幼兒園數(shù)學試題及答案
- 建筑施工安全教育培訓效果評估試題及答案
- 物理知識的深度2025年試題及答案
- 工業(yè)廢氣催化燃燒技術(shù)在冶金行業(yè)應用現(xiàn)狀與環(huán)保策略報告
- 文藝團筆試題目及答案
- 有色金屬資源循環(huán)利用產(chǎn)業(yè)鏈現(xiàn)狀與2025年市場潛力分析報告
- 短視頻平臺內(nèi)容監(jiān)管與行業(yè)監(jiān)管法律法規(guī)研究報告
- 施工現(xiàn)場安全數(shù)據(jù)分析試題及答案
- 電音節(jié)策劃方案
- 貝恩杯案例分析大賽初賽題目
- 2023年江蘇省南京市中考語文默寫題復習(附答案解析)
- 全國各省市郵編對照表
- 行政區(qū)域代碼表Excel
- YS/T 837-2012濺射靶材-背板結(jié)合質(zhì)量超聲波檢驗方法
- 燒烤類菜單表格
- DB11∕T 583-2022 扣件式和碗扣式鋼管腳手架安全選用技術(shù)規(guī)程
- 酒水購銷合同范本(3篇)
- ??低曄到y(tǒng)圖標
- 印染廠管理手冊
評論
0/150
提交評論