您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 广告经营 > Java源代码聊天室
Java聊天室制作人:_____杨永生_____制作时间:2018.9.26目录1本文简介12聊天室截图与说明22.1用Java编译:22.2服务器登录界面22.3服务器窗口22.4客服端登录界面32.5客服端窗口33服务器端63.1MyServer(方法63.2Login(方法93.3Time(方法124客户端134.1MyClient(方法134.2Login(方法164.3Time(方法191本文简介这是一个简单的Java聊天室,仅提供给一些刚学Java的学生做实验,本文也是仅供参考.本文代码都有注释,希望读者能读懂代码,本实验内部还有一些错误,比如只能一条一条的发信息,不能连发,希望能解决本问题的朋友能给我发信息,我的QQ号就是百度号!2聊天室截图与说明2.1用Java编译:本代码有七个类,放在六个java文件中,类名在下方希望读者自己观看,2.2服务器登录界面要先运行服务器端的程序用户名:y密码:1用户名密码可以自己设定点击确定可以登录,2秒后到服务端界面2.3服务器窗口聊天室的IP为本机的网络虚拟IP,在任何电脑上都能用,端口应设置在1024以后,2.4客服端登录界面和服务器端的登录一样2.5客服端窗口当登录上后客服端就显示已经连接了,此时服务器端的窗口如下因为本程序设计的不是很完整,具体的聊天要先从客服端开始:在客服端输入一条聊天内容后按确定,在服务器端就可以收到信息,之后客户端不能输入了,要等待服务器端来信息后才能继续输入信息.想要结束聊天,直接可以关闭窗口,也可以输入’bye’后断开聊天有兴趣的朋友可以继续完善本实验程序.3服务器端3.1MyServer(方法//服务器端代码importjava.awt.*。importjava.awt.event.ActionEvent。importjava.awt.event.ActionListener。importjava.io.BufferedReader。importjava.io.InputStreamReader。importjava.io.PrintWriter。importjava.net.ServerSocket。importjava.net.Socket。importjava.text.DateFormat。importjava.util.Date。importjavax.swing.*。publicclassMyServer{//窗体实现类protectedJLabellab10。//全体变量,做传递的一个组件Strings=已经成功连接。//初始字符串,在两个聊天窗口链接成功时输出,同时作为两个窗口传递字符的一个变量//构造方法publicMyServer({try{//异常处理tryJFrameframe=newJFrame(服务器窗口。//设置窗体frame.setLayout(null。//让布局管理器为空,使用绝对定位Fontfnt=newFont(Serief,Font.PLAIN,40。//字体设置Fontfnt1=newFont(Serief,Font.PLAIN,20。//字体设置//我的用户名显示JLabellab1=newJLabel(服务器名:,JLabel.LEFT。//标签实例化,文本左对齐lab1.setBounds(8,10,100,20。//设置组件位置及大小frame.add(lab1。//添加组件JTextFieldtext2=newJTextField(30。//单行文本输入组件text2.setBounds(150,10,200,20。//设置组件位置及大小text2.setEnabled(false。//文本条不可编辑text2.setText(笑笑聊天室。//输入内容text2.setFont(fnt1。//设置字体frame.add(text2。//添加组件//服务器IP显示JLabellab2=newJLabel(当前服务器IP:,JLabel.LEFT。//标签实例化,文本左对齐lab2.setBounds(8,45,100,20。//设置组件位置及大小frame.add(lab2。//添加组件JTextFieldtext3=newJTextField(30。//单行文本输入组件text3.setBounds(150,45,200,20。//设置组件位置及大小text3.setEnabled(false。//文本不可编辑text3.setText(127.0.0.1。//输入内容text3.setFont(fnt1。//设置字体frame.add(text3。//添加组件//服务器端口显示JLabellab3=newJLabel(当前服务器端口:,JLabel.LEFT。//标签实例化,文本左对齐lab3.setBounds(8,80,100,20。//设置组件位置及大小frame.add(lab3。//添加组件JTextFieldtext4=newJTextField(30。//单行文本输入组件text4.setBounds(150,80,200,20。//设置组件位置及大小text4.setEnabled(false。//文本不可编辑text4.setText(8888。//输入内容text4.setFont(fnt1。//设置字体frame.add(text4。//添加组件//聊天记录显示JLabellab4=newJLabel(聊天记录如下:,JLabel.LEFT。//标签实例化,文本左对齐lab4.setBounds(8,115,100,20。//设置组件位置及大小frame.add(lab4。//添加组件finalJTextAreatext1=newJTextArea(。//多行文本输入组件text1.setEnabled(false。//文本不可编辑text1.setLineWrap(true。//自动换行JScrollPanescr=newJScrollPane(text1,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS。//设置滚动条,水平和垂直滚动条始终显示scr.setBounds(8,150,450,350。//设置组件位置及大小frame.add(scr。//添加组件//聊天输入窗口及确定JLabellab5=newJLabel(请输入聊天内容:,JLabel.LEFT。//标签实例化,文本左对齐lab5.setBounds(8,500,100,20。//设置组件位置及大小frame.add(lab5。//添加组件finalJTextAreatext5=newJTextArea(。//多行文本输入组件text5.setLineWrap(true。//自动换行JScrollPanescr2=newJScrollPane(text5,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS。//设置滚动条,水平和垂直滚动条始终显示scr2.setBounds(150,500,300,50。//设置组件位置及大小frame.add(scr2。//添加组件finalJButtonbut=newJButton(确定。//设置确定按钮but.setFont(fnt。//添加字体设置but.setBounds(480,500,200,50。//设置组件位置及大小but.addActionListener(newActionListener({//采用内部匿名类publicvoidactionPerformed(ActionEvente{if(e.getSource(==but{//判断触发器源是否是提交按钮text1.append(笑笑:+lab10.getText(+\n。//在聊天记录上添加文本text1.append(text5.getText(+\n。//将输入的聊天内容输出在聊天记录上s=text5.getText(。//得到聊天内容text5.setText(。//将聊天窗口内容设置为空}}}。frame.add(but。//添加组件//当前时间显示JLabellab7=newJLabel(时间显示:,JLabel.LEFT。//标签实例化,文本左对齐lab7.setBounds(450,20,100,20。//设置组件位置及大小frame.add(lab7。//添加组件DateFormatdf=DateFormat.getDateTimeInstance(。//取得系统时间Stringdf2=df.format(newDate(。//将时间转换成字符串JLabellab8=newJLabel(df2,JLabel.LEFT。//标签实例化,文本左对齐lab8.setBounds(520,20,130,20。//设置组件位置及大小frame.add(lab8。//添加组件lab10=lab8。//传递时间显示,以便能在聊天记录上显示记录时间newTime(lab8。//使时间动态显示//用户列表显示JLabellab6=newJLabel(用户列表:,JLabel.LEFT。//标签实例化,文本左对齐lab6.setBounds(500,40,100,20。//设置组件位置及大小frame.add(lab6。//添加组件JTextAreatext6=newJTextArea(。//标签实例化,文本左对齐text6.setEnabled(false。//文本不可编辑text6.setLineWrap(true。//自动换行JScrollPanescr3=newJScrollPane(text6,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS。//设置滚动条,水平和垂直滚动条始终显示scr3.setBounds(460,70,220,420。//设置组件位置及大小frame.add(scr3。//添加组件//窗口的属性frame.setSize(700,600。//窗口大小frame.getContentPane(.setBackground(Color.pink。//窗口的背景颜色frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE。//关闭窗口时关闭程序frame.setLocation(100,50。//在电脑桌面上出现的位置frame.setVisible(true。//显示窗口//连个窗口连接//建立ServerSocket并等待连接请求ServerSocketserver=newServerSocket(8889。Socketsocket=server.accept(。//连接建立,通过Socket获取连接上的输入/输出流BufferedReaderin=newBufferedReader(newInputStreamReader(socket.getInputStream(。finalPrintWriterout=newPrintWriter(socket.getOutputStream(。//先读取Client发送的数据,然后从标准输入读取数据发送给Client当接收到bye时关闭连接Strings1=,s2=。//标志字符串,作为传递字符串使用while(!(s1=in.readLine(.equals(bye{//得到其他窗口传递的字符串,并判断是否结束text6.setT
本文标题:Java源代码聊天室
链接地址:https://www.777doc.com/doc-5273573 .html