Java源代碼---聊天室匯總_第1頁(yè)
Java源代碼---聊天室匯總_第2頁(yè)
Java源代碼---聊天室匯總_第3頁(yè)
Java源代碼---聊天室匯總_第4頁(yè)
Java源代碼---聊天室匯總_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Java聊天室目錄1本文簡(jiǎn)介2聊天室截圖與說(shuō)明2.1 用Java編譯:2.2 服務(wù)器登錄界面2.3 服務(wù)器窗口2.4 客服端登錄界面25客服端窗口3服務(wù)器端3.1 MyServer(方法3.2 Login(方法3.3 Time(方法4客戶(hù)端4.1 MyClient(方法4.2 Login(方法1本文簡(jiǎn)介這是一個(gè)簡(jiǎn)單的Java聊天室,僅提供給一些剛學(xué)Java的學(xué)生做實(shí)驗(yàn),本文也是僅供參考.本文代碼都有注釋?zhuān)Mx者能讀懂代碼,本實(shí)驗(yàn)內(nèi)部還有一些錯(cuò)誤,比如只能一條一條的發(fā)信息,不能連發(fā),希望能解決本問(wèn)題的朋友能給我發(fā)信息,我的QQ號(hào)就是百度號(hào)!2聊天室截圖與說(shuō)明2.1 用Java編譯:本代碼有七個(gè)

2、類(lèi),放在六個(gè)java文件中,類(lèi)名在下方希望讀者自己觀看2.2 服務(wù)器登錄界面要先運(yùn)行服務(wù)器端的程序用戶(hù)名:y密碼:1用戶(hù)名密碼可以自己設(shè)定點(diǎn)擊確定可以登錄,2秒后到服務(wù)端界面聊天室的IP為本機(jī)的網(wǎng)絡(luò)虛擬IP,在任何電腦上都能用,端口應(yīng)設(shè)置在1024以后,2.4客服端登錄界面和服務(wù)器端的登錄一樣2.5客服端窗口當(dāng)?shù)卿浬虾罂头司惋@示已經(jīng)連接了,此時(shí)服務(wù)器端的窗口如下由于本程序設(shè)計(jì)的不是很完整,具體的聊天要先從客服端開(kāi)始:在客服端輸入一條聊天內(nèi)容后按確定,在服務(wù)器端就可以收到信息,之后客戶(hù)端不能輸入了,要等待服務(wù)器端來(lái)信息后才能繼續(xù)輸入信息.想要結(jié)束聊天,直接可以關(guān)閉窗口,也可以輸入'by

3、后斷開(kāi)聊天有興趣的朋友可以繼續(xù)完善本實(shí)驗(yàn)程序3服務(wù)器端3.1 MyServer(方法/服務(wù)器端代碼importjava.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.io.BufferedReader;importjava.io.InputStreamReader;importjava.io.PrintWriter;.ServerSocket;.Socket;importjava.text.DateFormat;importjava.util.Date;importja

4、vax.swing.*;publicclassMyServer窗體實(shí)現(xiàn)類(lèi)protectedJLabellab10;/量體變量,做傳遞的一個(gè)組件Strings=”已經(jīng)成功連接"”/初始字符串,在兩個(gè)聊天窗口鏈接成功時(shí)輸出,同時(shí)作為兩個(gè)窗口傳遞字符的一個(gè)變量/構(gòu)造方法publicMyServer(try/異常處理tryJFrameframe=newJFrame(服務(wù)器窗口”;/設(shè)置窗體frame.setLayout(null;/讓布局管理器為空,使用絕對(duì)定位Fontfnt=newFont("Serief",Font.PLAIN,40;/字體設(shè)置Fontfnt1=new

5、Font("Serief",Font.PLAIN,20;/字體設(shè)置我的用戶(hù)名顯示JLabellab1=newJLabel('服務(wù)器名二JLabel.LEFT;/標(biāo)簽實(shí)例化,文本左對(duì)齊lab1.setBounds(8,10,100,20;殿置組件位置及大小frame.add(lab1;/傣力口組件JTextFieldtext2=newJTextField(30;/單行文本輸入組件text2.setBounds(150,10,200,20;般置組件位置及大小text2.setEnabled(false;我本條不可編輯text2.setText("笑笑聊天室”輸

6、入內(nèi)容text2.setFont(fnt1;/設(shè)置字體frame.add(text2;/魅力口組件/服務(wù)器IP顯示JLabellab2=newJLabel("當(dāng)前服務(wù)器IP:",JLabel.LEFT;/標(biāo)簽實(shí)例化,文本左對(duì)齊lab2.setBounds(8,45,100,20;殿置組件位置及大小frame.add(lab2;/傣力口組件JTextFieldtext3=newJTextField(30;/單行文本輸入組件text3.setBounds(150,45,200,20;般置組件位置及大小text3.setEnabled(false;彼本不可編輯text3.setT

7、ext(""/$俞入內(nèi)容text3.setFont(fnt1;/設(shè)置字體frame.add(text3;/魅力口組件/服務(wù)器端口顯示JLabellab3=newJLabel("當(dāng)前服務(wù)器端口二JLabel.LEFT;標(biāo)簽實(shí)例化,文本左對(duì)齊lab3.setBounds(8,80,100,20;殿置組件位置及大小frame.add(lab3;/傣力口組件JTextFieldtext4=newJTextField(30;/單行文本輸入組件text4.setBounds(150,80,200,20;般置組件位置及大小text4.setEnabled(fa

8、lse;成本不可編輯text4.setText("8888"輸入內(nèi)容text4.setFont(fnt1;/設(shè)置字體frame.add(text4;/魅力口組件/聊天記錄顯示JLabellab4=newJLabe(聊天記錄如下:",JLabel.LEFT;/標(biāo)簽實(shí)例化,文本左對(duì)齊lab4.setBounds(8,115,100,20;殿置組件位置及大小frame.add(lab4;/傣力口組件finalJTextAreatext1=newJTextArea(;/多行文本輸入組件text1.setEnabled(false;放本不可編輯text1.setLineWr

9、ap(true;自動(dòng)換行JScrollPanescr=newJScrollPane(text1,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS;/設(shè)身滾動(dòng)條,水平彳口垂直滾動(dòng)條始終顯示scr.setBounds(8,150,450,350;股置組件位置及大小frame.add(scr;/傣力口組件/聊天輸入窗口及確定JLabellab5=newJLabel('請(qǐng)輸入聊天內(nèi)容二JLabel.LEFT;標(biāo)簽實(shí)例化,文本左對(duì)齊lab5.setBounds(8,500,100,20;殿置

10、組件位置及大小frame.add(lab5;/傣力口組件finalJTextAreatext5=newJTextArea(;/多行文本輸入組件text5.setLineWrap(true;/自動(dòng)換行JScrollPanescr2=newJScrollPane(text5,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS;/設(shè)徑滾動(dòng)條,水平而垂直滾動(dòng)條始終顯示scr2.setBounds(150,500,300,50;設(shè)置組件位置及大小frame.add(scr2;/徐力口組件finalJB

11、uttonbut=newJButton("確定"/設(shè)置確定按鈕but.setFont(fnt;/徐力口字體設(shè)置but.setBounds(480,500,200,50;放置組件位置及大小but.addActionListener(newActionListener(/采用內(nèi)部匿名類(lèi)publicvoidactionPerformed(ActionEventeif(e.getSource(=but判斷觸發(fā)器源是否是提交按鈕text1.append('笑笑:"+lab10.getText(+"n"在聊天記錄上添加文本text1.append(

12、text5.getText(+"n"/W輸入的聊天內(nèi)容輸出在聊天記錄上s=text5.getText(;/馬到聊天內(nèi)容text5.setText(""/將聊天窗口內(nèi)容設(shè)置為空;frame.add(but;/魅力口組件當(dāng)前時(shí)間顯示JLabellab7=newJLabel('時(shí)間顯示二JLabel.LEFT;/標(biāo)簽實(shí)例化,文本左對(duì)齊lab7.setBounds(450,20,100,20;放置組件位置及大小frame.add(lab7;/傣力口組件DateFormatdf=DateFormat.getDateTimeInstance(;取得系統(tǒng)時(shí)間S

13、tringdf2=df.format(newDate(;/將時(shí)間轉(zhuǎn)換成字符串JLabellab8=newJLabel(df2,JLabel.LEFT;/標(biāo)簽實(shí)例化,文本左對(duì)齊lab8.setBounds(520,20,130,20;放置組件位置及大小frame.add(lab8;/傣力口組件lab10=lab8;/傳遞時(shí)間顯示,以便能在聊天記錄上顯示記錄時(shí)間newTime(lab8;/使時(shí)間動(dòng)態(tài)顯示/用戶(hù)列表顯示JLabellab6=newJLabel("用戶(hù)列表:",JLabel.LEFT;/標(biāo)簽實(shí)例化,文本左對(duì)齊lab6.setBounds(500,40,100,20;

14、放置組件位置及大小frame.add(lab6;/傣力口組件JTextAreatext6=newJTextArea(;/標(biāo)簽實(shí)例化,文本左對(duì)齊text6.setEnabled(false;成本不可編輯text6.setLineWrap(true;/自動(dòng)換行JScrollPanescr3=newJScrollPane(text6,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS;/設(shè)徑滾動(dòng)條,水平而垂直滾動(dòng)條始終顯示scr3.setBounds(460,70,220,420;設(shè)置組件位置及大

15、小frame.add(scr3;/徐力口組件/窗口的屬性frame.setSize(700,600;/S口大/、frame.getContentPane(setBackground(Color.pink;/J口的背景顏色frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE;/關(guān)閉窗口時(shí)關(guān)閉程序frame.setLocation(100,50;/春電月面桌面上出現(xiàn)的位置frame.setVisible(true;/顯示窗口/連個(gè)窗口連接/建立ServerSocket并等待連接請(qǐng)求ServerSocketserver=newServerSocket

16、(8889;Socketsocket=server.accept(;/連接建立,通過(guò)Socket獲取連接上的輸入/輸出流BufferedReaderin=newBufferedReader(newInputStreamReader(socket.getInputStream(;finalPrintWriterout=newPrintWhter(socket.getOutputStream(;/先讀取Client發(fā)送的數(shù)據(jù),然后從標(biāo)準(zhǔn)輸入讀取數(shù)據(jù)發(fā)送給Client當(dāng)接收到bye時(shí)關(guān)閉連接Strings1="",s2=""標(biāo)志"符志,作為傳遞字符串

17、使用while(!(s1=in.readLine(.equals("bye”/得到其他窗口傳遞的字符串,并判斷是否結(jié)束text6.setText("可可在線(xiàn)”/當(dāng)連接成功是在用戶(hù)列表中輸出用戶(hù)名字if(!s1.equals(""/如果傳遞的字符不為空text1.append('可可:"+lab10.getText(+"n"在聊天記錄上添加文本text1.append(s1+"n"/輸入的聊天內(nèi)容輸出在聊天記錄上s2=s;陽(yáng)等在聊天窗口中得到的字符串傳遞給輸出字符串for(;s2.equals(&q

18、uot;"|s2.equals(null;s2=s/S傳遞的字符串為空時(shí)等待用戶(hù)輸入聊天內(nèi)容S=""/將在聊天窗口中得到的字符串設(shè)為空if(!s2.equals(""&&!s2.equals(null/s2不為空時(shí)做out.println(s2;/向其他窗口輸出字符串out.flush(;/輸出聊天內(nèi)容/關(guān)閉連接in.close(;out.close(;socket.close(;server.close(;catch(Exceptione/main函數(shù)publicstaticvoidmain(StringargsnewLogi

19、n(;/登錄實(shí)現(xiàn)4.2 Login(方法importjava.awt.event.WindowAdapter;importjava.awt.event.ActionListener;importjava.awt.event.WindowEvent;importjava.awt.event.ActionEvent;importjava.awt.Color;importjava.awt.Font;importjavax.swing.JFrame;importjavax.swing.JButton;importjavax.swing.JLabel;importjavax.swing.JTextFie

20、ld;importjavax.swing.JPasswordField;/用戶(hù)名和密碼設(shè)置classLoginCheck/設(shè)置登錄密碼privateStringname;例戶(hù)名privateStringpassword俯碼/構(gòu)造方法publicLoginCheck(Stringname,S=name;/傳遞用戶(hù)名this.password=password;胺遞密碼/驗(yàn)證用戶(hù)名和密碼publicbooleanvalidate(/驗(yàn)證方法if("y".equals(name&&"1".equals

21、(password/判斷用戶(hù)名和密碼是否正確returntrue;/通回trueelsereturnfalse;/M回false;/登錄窗口classLogin/登錄類(lèi)名booleanf=false;/®登錄時(shí)設(shè)置的一個(gè)標(biāo)志privateJFrameframe=newJFrame("WelcomeToMLDN”;/設(shè)置窗體privateJButtonsubmit=newJButton('登陸"/設(shè)置登錄按鈕privateJButtonreset=newJButton(重置”;/設(shè)置重置按鈕privateJLabelnameLab=new兒abel(服務(wù)器:

22、",標(biāo)簽實(shí)例化privateJLabelpassLab=newJLabel(®碼:"/標(biāo)簽實(shí)例化privateJLabelinfoLab=newJLabel("服務(wù)器登陸系統(tǒng)",標(biāo)簽實(shí)例化privateJTextFieldnameText=newJTextField(10;/單行文本輸入條privateJPasswordFieldpassText=newJPasswordField(黑行密碼文本輸入條publicLogin(/登錄窗口構(gòu)造方法Fontfnt=newFont("Serief",Font.ITALIC+Font.

23、BOLD,12;/設(shè)置字體infoLab.setFont(fnt;/設(shè)置標(biāo)簽的顯示文字submit.addActionListener(newActionListener(/采用內(nèi)部匿名類(lèi)publicvoidactionPerformed(ActionEventeif(e.getSource(=submit/判斷觸發(fā)器源是否是提交按鈕Stringtname=nameText.getText(;/得到輸入的用戶(hù)名Stringtpass=newString(passText.getPassword(得到輸入的密碼,此時(shí)通過(guò)getPassagewordT法返回的是字符數(shù)組LoginChecklog=

24、newLoginCheck(tname,tpass;度例化LoginCheck對(duì)象,傳入輸入的用戶(hù)名和密碼if(log.validate(/對(duì)用戶(hù)名和密碼進(jìn)行驗(yàn)證try線(xiàn)程異常處理tryThread.sleep(2000;/2秒后打開(kāi)聊天窗口f=true;/登錄成功后的表示項(xiàng)為trueframe.dispose(;/快閉本窗口catch(Exceptionee/異常獲取elseinfoLab.setText("登陸失敗,錯(cuò)誤的用戶(hù)名或密碼!"/登錄失敗;reset.addActionListener(newActionListener(采用內(nèi)部匿名類(lèi)publicvoidac

25、tionPerformed(ActionEventeif(e.getSource(=reset/陰斷觸發(fā)器源是否是提交按鈕nameText.setText("”;/設(shè)置文本框中的內(nèi)容passText.setText("”;/設(shè)置文本框中的內(nèi)容infoLab.setText("服務(wù)器登陸系統(tǒng)"/恢復(fù)標(biāo)簽顯示;frame.addWindowListener(newWindowAdapter(/力口入窗口監(jiān)聽(tīng)publicvoidwindowClosing(WindowEvente;/加入事件frame.setLayout(null;/使用絕對(duì)定位nameLab

26、.setBounds(5,5,60,20;股置標(biāo)簽的位置及大小passLab.setBounds(5,30,60,20;設(shè)置標(biāo)簽的位置及大小infoLab.setBounds(5,65,220,30;/設(shè)置標(biāo)簽的位置及大小nameText.setBounds(65,5,100,20;設(shè)置文本域的位置及大小passText.setBounds(65,30,100,20淡置密碼域的位置及大小submit.setBounds(165,5,60,20;殷置按鈕的位置及大小reset.setBounds(165,30,60,20;設(shè)置按鈕的位置及大小frame.add(nameLab;/向窗體加入標(biāo)簽f

27、rame.add(passLab;/向窗體加入標(biāo)簽frame.add(infoLab;/向窗體加入標(biāo)簽frame.add(nameText;/向窗體加入文本框frame.add(passText;/向窗體加入密碼框frame.add(submit;加窗體加入按鈕frame.add(reset;/向窗體加入按鈕frame.setSize(280,130;/設(shè)置窗體大小frame.getContentPane(setBackground(Color.green諛:置窗體的背景顏色frame.setLocation(300,200;/校置窗體在電腦桌面上的位置frame.setVisible(tru

28、e;/顯示窗口while(f=false當(dāng)?shù)卿浭r(shí),一直循環(huán)運(yùn)行,newMyServer(;/顯示窗體頁(yè)面4.3 Time(方法importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.text.SimpleDateFormat;importjava.util.Date;importjavax.swing.JLabel;importjavax.swing.Timer;/時(shí)間類(lèi)publicclassTimepublicTime(JLabeltime/構(gòu)造方法this.setTimer(time

29、;設(shè)置時(shí)間publicvoidsetTimer(JLabeltime設(shè)置時(shí)間方法finalJLabelvarTime=time;/傳遞組件TimertimeAction=newTimer(1000,newActionListener(/時(shí)間監(jiān)聽(tīng)publicvoidactionPerformed(ActionEventelongtimemillis=System.currentTimeMillis(;/得到系統(tǒng)時(shí)間SimpleDateFormatdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss"轉(zhuǎn)換日期顯示格式varTime.setText

30、(df.format(newDate(timemillis;輸出得到的時(shí)間;timeAction.start(;/開(kāi)啟線(xiàn)程5客戶(hù)端5.1 MyClient(方法importjava.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.io.BufferedReader;importjava.io.InputStreamReader;importjava.io.PrintWriter;.Socket;importjava.text.DateFormat;importjava.u

31、til.Date;importjavax.swing.*;publicclassMyClientprotectedJLabellab10;/全體變量,做傳遞的一個(gè)組件Strings="連接成功",初始字符串,在兩個(gè)聊天窗口鏈接成功時(shí)輸出,同時(shí)作為兩個(gè)窗口傳遞字符的一個(gè)變量/構(gòu)造方法publicMyClient(JFrameframe=newJFrame(戶(hù)端窗口";/設(shè)置窗體frame.setLayout(null;/讓布局管理器為空,使用絕對(duì)定位Fontfnt=newFont("Serief",Font.PLAIN,40;/字體設(shè)置Fontf

32、nt1=newFont("Serief",Font.PLAIN,20;/字體設(shè)置我的用戶(hù)名顯示JLabellab1=newJLabel('服務(wù)器名二JLabel.LEFT;/標(biāo)簽實(shí)例化,文本左對(duì)齊lab1.setBounds(8,10,100,20;殿置組件位置及大小frame.add(lab1;/傣力口組件JTextFieldtext2=newJTextField(30;/單行文本輸入組件text2.setBounds(150,10,200,20;般置組件位置及大小text2.setEnabled(false;我本條不可編輯text2.setText("

33、可可聊天室",輸入內(nèi)容text2.setFont(fnt1;/設(shè)置字體frame.add(text2;/魅力口組件/服務(wù)器IP顯示JLabellab2=newJLabel("當(dāng)前服務(wù)器IP:",JLabel.LEFT;/標(biāo)簽實(shí)例化,文本左對(duì)齊lab2.setBounds(8,45,100,20;殿置組件位置及大小frame.add(lab2;/傣力口組件JTextFieldtext3=newJTextField(30;/單行文本輸入組件text3.setBounds(150,45,200,20;般置組件位置及大小text3.setEnabled(false;彼本不

34、可編輯text3.setText(""/t入內(nèi)容text3.setFont(fnt1;/設(shè)置字體frame.add(text3;/魅力口組件/服務(wù)器端口顯示JLabellab3=newJLabel("當(dāng)前服務(wù)器端口二JLabel.LEFT;標(biāo)簽實(shí)例化,文本左對(duì)齊lab3.setBounds(8,80,100,20;殿置組件位置及大小frame.add(lab3;/傣力口組件JTextFieldtext4=newJTextField(30;/單行文本輸入組件text4.setBounds(150,80,200,20;般置組件位置及大小text4.s

35、etEnabled(false;成本不可編輯text4.setText("8888"輸入內(nèi)容text4.setFont(fnt1;/設(shè)置字體frame.add(text4;/魅力口組件/聊天記錄顯示JLabellab4=newJLabe(聊天記錄如下:",JLabel.LEFT;/標(biāo)簽實(shí)例化,文本左對(duì)齊lab4.setBounds(8,115,100,20;殿置組件位置及大小frame.add(lab4;/傣力口組件finalJTextAreatext1=newJTextArea(;/多行文本輸入組件text1.setEnabled(false;放本不可編輯tex

36、t1.setLineWrap(true;自動(dòng)換行JScrollPanescr=newJScrollPane(text1,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS;/設(shè)身滾動(dòng)條,水平彳口垂直滾動(dòng)條始終顯示scr.setBounds(8,150,450,350;股置組件位置及大小frame.add(scr;/傣力口組件/聊天輸入窗口及確定JLabellab5=newJLabel('請(qǐng)輸入聊天內(nèi)容二JLabel.LEFT;標(biāo)簽實(shí)例化,文本左對(duì)齊lab5.setBounds(8,5

37、00,100,20;殿置組件位置及大小frame.add(lab5;/傣力口組件finalJTextAreatext5=newJTextArea(;/多行文本輸入組件text5.setLineWrap(true;/自動(dòng)換行JScrollPanescr2=newJScrollPane(text5,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS;/設(shè)徑滾動(dòng)條,水平而垂直滾動(dòng)條始終顯示scr2.setBounds(150,500,300,50;設(shè)置組件位置及大小frame.add(scr2;/

38、徐力口組件finalJButtonbut=newJButton("確定"/設(shè)置確定按鈕but.setFont(fnt;/徐力口字體設(shè)置but.setBounds(480,500,200,50;放置組件位置及大小but.addActionListener(newActionListener(/采用內(nèi)部匿名類(lèi)publicvoidactionPerformed(ActionEventeif(e.getSource(=but判斷觸發(fā)器源是否是提交按鈕text1.append('可可:"+lab10.getText(+"n"在聊天記錄上添加文本t

39、ext1.append(text5.getText(+"n"/照輸入的聊天內(nèi)容輸出在聊天記錄上s=text5.getText(;/馬到聊天內(nèi)容text5.setText(""/將聊天窗口內(nèi)容設(shè)置為空;frame.add(but;/魅力口組件當(dāng)前時(shí)間顯示JLabellab7=newJLabel('時(shí)間顯示二JLabel.LEFT;/標(biāo)簽實(shí)例化,文本左對(duì)齊lab7.setBounds(450,20,100,20;放置組件位置及大小frame.add(lab7;/傣力口組件DateFormatdf=DateFormat.getDateTimeInsta

40、nce(;取得系統(tǒng)時(shí)間Stringdf2=df.format(newDate(;/將時(shí)間轉(zhuǎn)換成字符串JLabellab8=newJLabel(df2,JLabel.LEFT;/標(biāo)簽實(shí)例化,文本左對(duì)齊lab8.setBounds(520,20,130,20;放置組件位置及大小frame.add(lab8;/傣力口組件lab10=lab8;/傳遞時(shí)間顯示,以便能在聊天記錄上顯示記錄時(shí)間newTime(lab8;/使時(shí)間動(dòng)態(tài)顯示/用戶(hù)列表顯示JLabellab6=newJLabel("用戶(hù)列表二JLabel.LEFT;/標(biāo)簽實(shí)例化,文本左對(duì)齊lab6.setBounds(500,40,10

41、0,20;放置組件位置及大小frame.add(lab6;/傣力口組件JTextAreatext6=newJTextArea(;/標(biāo)簽實(shí)例化,文本左對(duì)齊text6.setEnabled(false;成本不可編輯text6.setLineWrap(true;/自動(dòng)換行JScrollPanescr3=newJScrollPane(text6,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS;/設(shè)徑滾動(dòng)條,水平而垂直滾動(dòng)條始終顯示scr3.setBounds(460,70,220,420;設(shè)置組

42、件位置及大小frame.add(scr3;/徐力口組件/窗口的屬性frame.setSize(700,600;/8口大/、frame.getContentPane(setBackground(Color.pink;/J口的背景顏色frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE;/關(guān)閉窗口時(shí)關(guān)閉程序frame.setLocation(10,10;/在電腦桌面上出現(xiàn)的位置frame.setVisible(true;/顯示窗口try/try異常處理Socketsocket=newSocket("",8889

43、;廢出連接請(qǐng)求/建立連接,通過(guò)Socket獲得連接上的輸入/輸出流PrintWriterout=newPrintWriter(socket.getOutputStream(;BufferedReaderin=newBufferedReader(newInputStreamReader(socket.getInputStream(;/從標(biāo)準(zhǔn)輸入中讀取一行,發(fā)送Server端,當(dāng)用戶(hù)輸入bye時(shí)結(jié)束連接dowhile(s.equals(""|s.equals(null/當(dāng)傳遞的字符串為空時(shí)等待用戶(hù)輸入聊天內(nèi)容if(!s.equals(""&&

44、!s.equals(null/s不為空時(shí)做out.println(s;向其他窗口輸出字符串s=""/將在聊天窗口中得到的字符串設(shè)為空out.flush(;/輸出聊天內(nèi)容if(!s.equals("bye"判斷聊天是否結(jié)束Strings3;/得到其他窗口傳來(lái)的字符串while(s3=in.readLine(.equals("n"&&s3.equals(null&&s3.equals("”/判斷s3是否為空,為空時(shí)等待text6.setText("笑笑在線(xiàn)”/當(dāng)連接成功是在用戶(hù)列表中輸出

45、用戶(hù)名字if(!s3.equals("n"&&!s3.equals(null&&!s3.equals("”/s3不為空時(shí)做text1.append('笑笑:"+lab10.getText(+"n"在聊天記錄上添加文本text1.append(s3+"n"/輸入的聊天內(nèi)容輸出在聊天記錄上while(!s.equals("bye"判斷是否結(jié)束/關(guān)閉連接out.close(;in.close(;socket.close(;catch(Exceptione/mai

46、n函數(shù)publicstaticvoidmain(StringargsnewLogin(;/登錄實(shí)現(xiàn)5.2 Login(方法importjava.awt.event.WindowAdapter;importjava.awt.event.ActionListener;importjava.awt.event.WindowEvent;importjava.awt.event.ActionEvent;importjava.awt.Color;importjava.awt.Font;importjavax.swing.JFrame;importjavax.swing.JButton;importjava

47、x.swing.JLabel;importjavax.swing.JTextField;importjavax.swing.JPasswordField;/用戶(hù)名和密碼設(shè)置classLoginCheck/設(shè)置登錄密碼privateStringname;例戶(hù)名privateStringpassword俯碼/構(gòu)造方法publicLoginCheck(Stringname,S=name;/傳遞用戶(hù)名this.password=password;胺遞密碼/驗(yàn)證用戶(hù)名和密碼publicbooleanvalidate(/驗(yàn)證方法if("y".

48、equals(name&&"1".equals(password/判斷用戶(hù)名和密碼是否正確returntrue;/通回trueelsereturnfalse;/M回false;/登錄窗口classLogin/登錄類(lèi)名booleanf=false;/®登錄時(shí)設(shè)置的一個(gè)標(biāo)志privateJFrameframe=newJFrame("WelcomeToMLDN”;/設(shè)置窗體privateJButtonsubmit=newJButton('登陸"/設(shè)置登錄按鈕privateJButtonreset=newJButton(重置”;

49、/設(shè)置重置按鈕privateJLabelnameLab=new兒abel(用戶(hù)名:",標(biāo)簽實(shí)例化privateJLabelpassLab=newJLabel(®碼:"/標(biāo)簽實(shí)例化privateJLabelinfoLab=newJLabel("用戶(hù)登陸系統(tǒng)",標(biāo)簽實(shí)例化privateJTextFieldnameText=newJTextField(10;/單行文本輸入條privateJPasswordFieldpassText=newJPasswordField(1/行密碼文本輸入條publicLogin(/登錄窗口構(gòu)造方法Fontfnt=new

50、Font("Serief",Font.ITALIC+Font.BOLD,12;/設(shè)置字體infoLab.setFont(fnt;/設(shè)置標(biāo)簽的顯示文字submit.addActionListener(newActionListener(/采用內(nèi)部匿名類(lèi)publicvoidactionPerformed(ActionEventeif(e.getSource(=submit/判斷觸發(fā)器源是否是提交按鈕Stringtname=nameText.getText(;/得到輸入的用戶(hù)名Stringtpass=newString(passText.getPassword(得到輸入的密碼,此時(shí)通過(guò)getPassagewordT法返回的是字符數(shù)組LoginChecklog=newLoginCheck(tname,tpass;度例化LoginCheck對(duì)象,傳入輸入的用戶(hù)名和密碼if(log.validate(/對(duì)用戶(hù)名和密碼進(jìn)行驗(yàn)證tryThread.sleep(2000;/2秒后打開(kāi)聊天窗口f=true;/登錄成功后的表示項(xiàng)為trueframe.dispose(;/快閉本窗口catch(Exce

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論