Java源代码聊天室(共21页).doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《Java源代码聊天室(共21页).doc》由会员分享,可在线阅读,更多相关《Java源代码聊天室(共21页).doc(21页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上Java聊天室制作人:_杨永生_制作时间:2018.9.26目录1 本文简介这是一个简单的Java聊天室,仅提供给一些刚学Java的学生做实验,本文也是仅供参考.本文代码都有注释,希望读者能读懂代码,本实验内部还有一些错误,比如只能一条一条的发信息,不能连发,希望能解决本问题的朋友能给我发信息,我的QQ号就是百度号!2 聊天室截图与说明2.1 用Java编译:本代码有七个类,放在六个java文件中,类名在下方希望读者自己观看,2.2 服务器登录界面要先运行服务器端的程序用户名:y密码:1用户名密码可以自己设定点击确定可以登录,2秒后到服务端界面2.3 服务器窗口聊天室
2、的IP为本机的网络虚拟IP,在任何电脑上都能用,端口应设置在1024以后,2.4 客服端登录界面和服务器端的登录一样2.5 客服端窗口当登录上后 客服端就显示已经连接了,此时服务器端的窗口如下因为本程序设计的不是很完整,具体的聊天要先从客服端开始:在客服端输入一条聊天内容后按确定,在服务器端就可以收到信息,之后客户端不能输入了,要等待服务器端来信息后才能继续输入信息.想要结束聊天,直接可以关闭窗口,也可以输入bye后断开聊天有兴趣的朋友可以继续完善本实验程序.3 服务器端3.1 MyServer(方法/服务器端代码import java.awt.*。import java.awt.event.
3、ActionEvent。import java.awt.event.ActionListener。import java.io.BufferedReader。import java.io.InputStreamReader。import java.io.PrintWriter。import .ServerSocket。import .Socket。import java.text.DateFormat。import java.util.Date。import javax.swing.*。public class MyServer /窗体实现类protected JLabel lab10。 /全
4、体变量,做传递的一个组件 String s=已经成功连接。 /初始字符串,在两个聊天窗口链接成功时输出,同时作为两个窗口传递字符的一个变量 /构造方法 public MyServer(try/异常处理tryJFrame frame=new JFrame(服务器窗口。 /设置窗体frame.setLayout(null。 /让布局管理器为空 ,使用绝对定位Font fnt=new Font(Serief,Font.PLAIN,40。/字体设置Font fnt1=new Font(Serief,Font.PLAIN,20。/字体设置/我的用户名显示JLabel lab1=new JLabel(服务
5、器名:,JLabel.LEFT。 /标签实例化,文本左对齐lab1.setBounds(8, 10, 100, 20。 /设置组件位置及大小frame.add(lab1。 /添加组件JTextField text2=new JTextField(30。 /单行文本输入组件text2.setBounds(150, 10, 200, 20。/设置组件位置及大小text2.setEnabled(false。/文本条不可编辑text2.setText(笑笑聊天室。/输入内容text2.setFont(fnt1。/设置字体frame.add(text2。/添加组件/服务器IP显示JLabel lab2=
6、new JLabel(当前服务器IP:,JLabel.LEFT。 /标签实例化,文本左对齐lab2.setBounds(8, 45, 100, 20。/设置组件位置及大小frame.add(lab2。/添加组件JTextField text3=new JTextField(30。/单行文本输入组件text3.setBounds(150, 45, 200, 20。/设置组件位置及大小text3.setEnabled(false。 /文本不可编辑text3.setText(127.0.0.1。/输入内容text3.setFont(fnt1。/设置字体frame.add(text3。 /添加组件/服
7、务器端口显示JLabel lab3=new JLabel(当前服务器端口:,JLabel.LEFT。 /标签实例化,文本左对齐lab3.setBounds(8, 80, 100, 20。/设置组件位置及大小frame.add(lab3。/添加组件JTextField text4=new JTextField(30。/单行文本输入组件text4.setBounds(150, 80, 200, 20。/设置组件位置及大小text4.setEnabled(false。/文本不可编辑text4.setText(8888。/输入内容text4.setFont(fnt1。/设置字体frame.add(te
8、xt4。/添加组件/聊天记录显示JLabel lab4=new JLabel(聊天记录如下:,JLabel.LEFT。 /标签实例化,文本左对齐lab4.setBounds(8, 115, 100, 20。/设置组件位置及大小frame.add(lab4。/添加组件final JTextArea text1=new JTextArea(。/多行文本输入组件text1.setEnabled(false。/文本不可编辑text1.setLineWrap(true。/自动换行 JScrollPane scr=new JScrollPane(text1,JScrollPane.VERTICAL_SCR
9、OLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS。 /设置滚动条,水平和垂直滚动条始终显示scr.setBounds(8, 150, 450, 350。/设置组件位置及大小frame.add(scr。/添加组件/聊天输入窗口及确定JLabel lab5=new JLabel(请输入聊天内容:,JLabel.LEFT。 /标签实例化,文本左对齐lab5.setBounds(8, 500, 100, 20。/设置组件位置及大小frame.add(lab5。/添加组件final JTextArea text5=new JTextArea(。/
10、多行文本输入组件text5.setLineWrap(true。/自动换行JScrollPane scr2=new JScrollPane(text5,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS。/设置滚动条,水平和垂直滚动条始终显示scr2.setBounds(150, 500, 300, 50。/设置组件位置及大小frame.add(scr2。/添加组件 final JButton but=new JButton(确定。/设置确定按钮but.setFont(fnt。/添加字体设置b
11、ut.setBounds(480, 500, 200, 50。/设置组件位置及大小but.addActionListener(new ActionListener( /采用内部匿名类public void actionPerformed(ActionEvent eif(e.getSource(=but /判断触发器源是否是提交按钮text1.append(笑笑: +lab10.getText(+n 。/在聊天记录上添加文本text1.append(text5.getText(+n。 /将输入的聊天内容输出在聊天记录上 s=text5.getText(。 /得到聊天内容 text5.setTex
12、t(。 / 将聊天窗口内容设置为空 。frame.add(but。/添加组件/当前时间显示JLabel lab7=new JLabel(时间显示:,JLabel.LEFT。/标签实例化,文本左对齐lab7.setBounds(450, 20, 100, 20。/设置组件位置及大小frame.add(lab7。/添加组件DateFormat df=DateFormat.getDateTimeInstance(。/取得系统时间String df2= df.format(new Date(。/将时间转换成字符串JLabel lab8=new JLabel(df2,JLabel.LEFT。/标签实例化
13、,文本左对齐lab8.setBounds(520, 20, 130, 20。/设置组件位置及大小frame.add(lab8。/添加组件lab10=lab8。 /传递时间显示,以便能在聊天记录上显示记录时间new Time(lab8。 /使时间动态显示/用户列表显示JLabel lab6=new JLabel(用户列表:,JLabel.LEFT。/标签实例化,文本左对齐lab6.setBounds(500, 40, 100, 20。/设置组件位置及大小frame.add(lab6。/添加组件JTextArea text6=new JTextArea(。/标签实例化,文本左对齐text6.set
14、Enabled(false。/文本不可编辑text6.setLineWrap(true。/自动换行JScrollPane scr3=new JScrollPane(text6,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS。/设置滚动条,水平和垂直滚动条始终显示scr3.setBounds(460, 70, 220, 420。/设置组件位置及大小frame.add(scr3。/添加组件/窗口的属性frame.setSize(700,600。/窗口大小frame.getContentPan
15、e(.setBackground(Color.pink。/窗口的背景颜色frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE。/关闭窗口时关闭程序frame.setLocation(100,50。/在电脑桌面上出现的位置frame.setVisible(true。/显示窗口/连个窗口连接/建立Server Socket并等待连接请求 ServerSocket server =new ServerSocket(8889。 Socket socket=server.accept(。 /连接建立,通过Socket获取连接上的输入/输出流 Buffer
16、edReader in=new BufferedReader(new InputStreamReader(socket.getInputStream(。 final PrintWriter out =new PrintWriter(socket.getOutputStream(。 /先读取Client发送的数据,然后从标准输入读取数据发送给Client当接收到bye时关闭连接String s1=,s2=。 /标志字符串,作为传递字符串使用 while(!(s1=in.readLine(.equals(bye /得到其他窗口传递的字符串,并判断是否结束 text6.setText(可可在线。 /
17、当连接成功是在用户列表中 输出用户名字 if(!s1.equals( /如果传递的字符串不为空 text1.append(可可: +lab10.getText(+n 。/在聊天记录上添加文本 text1.append(s1+n。 /将输入的聊天内容输出在聊天记录上 s2=s。/将在聊天窗口中得到的字符串传递给输出字符串 for(。s2.equals(|s2.equals(null。s2=s/当传递的字符串为空时等待用户输入聊天内容 s=。/将在聊天窗口中得到的字符串设为空 if(!s2.equals(&!s2.equals(null/ s2不为空时做 out.println(s2。/向其他窗口
18、输出字符串 out.flush(。/输出聊天内容 /关闭连接 in.close(。 out.close(。 socket.close(。 server.close(。 catch(Exception e /main函数public static void main(String argsnew Login(。/登录实现3.2 Login(方法import java.awt.event.WindowAdapter 。import java.awt.event.ActionListener 。import java.awt.event.WindowEvent 。import java.awt.ev
19、ent.ActionEvent 。import java.awt.Color 。import java.awt.Font 。import javax.swing.JFrame 。import javax.swing.JButton 。import javax.swing.JLabel 。import javax.swing.JTextField 。import javax.swing.JPasswordField 。/用户名和密码设置class LoginCheck/设置登录密码private String name 。/用户名private String password 。/密码/构造方法
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 源代码 聊天室 21
![提示](https://www.deliwenku.com/images/bang_tan.gif)
限制150内