版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-.z.一.系统需求分析网络聊天室通常直称聊天室,是一种人们可以在线交谈的网络论坛,在同一聊天室的人们通过播送消息进展实时交谈。在当今信息时代,越来越多的聊天工具被应用,java语言是当今流行的网络编程语言,它具有面向对象,与平台无关,平安,多线程等特点。使用java语言不仅可以实现大型企业级的分布式应用系统,还能够为小型的的,嵌入式设备进展应用程序的开发。面向对象的开发是当今世界最流行的开发方法,它不仅具有更贴近自然地语义,而且有利于软件的维护和继承,锻炼我们熟练地应用面向对象的思想和设计方法解决实际问题的能力。本程序正是用java语言实现了简单聊天功能。它是图形界面,线程,流与文件系统等技术的综合应用。其界面主要采用了java.awt包,java.swing包等。二.系统总体设计1.对性能的规定由于本软件知识一个聊天程序,程序只提供用户之间的聊天功能,故对网络传输数据要求不是很高,只要正常的传输速度就可以了。2数据管理IP地址〔IP〕,端口〔Port〕3.开发环境本软件采用Java语言编写,Java语言是一种跨平台的编程语言,所以本软件对操作系统没有特别的要求。而网络传输方面采用TCP/IP网络传输协议或者是RMI。4.设计概要〔1〕本软件客户端与用户共用一段程序。客户端编译运行后,在窗口选择----侦听。用户编译运行后,在窗口选择----连接。〔2〕本软件实现的功能有1)允许效劳器侦听客户端,客户端连接到效劳器2)允许效劳区与客户端之间进展聊天;3)允许效劳器与客户端更改背景颜色;4)允许效劳器与客户端更改字体颜色;5〕效劳器与客户端时,会显示内容发送时间;6〕允许效劳器与客户端用鼠标点击"发送〞,按ENTER键均可发送内容7〕允许效劳器与客户端用鼠标点击关闭时关闭聊天窗口三.系统详细设计1.代码功能描述〔1〕程序中引入的包:importjava.awt.*;importjava.awt.event.*;importjava*.swing.*;.*;importjava.io.*;〔2〕代码中自定义的类:类名:chatHouse继承的类:JFrame实现的接口:ActionListener,Runnable作用:构造效劳器界面以及客户端界面。定义的对象:Te*tAreata;JTe*tFieldip; JTe*tFieldport; uttonbtn_server; uttonbtn_client; uttonbtn_backGroundCol; uttonbtn_fontCol; JTe*tFieldsend_te*t; uttonbtn_send; uttonbtn_close; JLabelpic; Socketskt;构造方法:publicchatHouse()主要成员方法:publicvoidrun()publicvoidactionPerformed(ActionEvente)publicvoiddoServer()publicvoiddoSend()2.源代码[chatHouse.java]importjava.awt.*;importjava.awt.event.*;importjava*.swing.*;.*;importjava.io.*;importjava.util.*;publicclasschatHousee*tendsJFrameimplementsActionListener,Runnable{ privateTe*tAreata; privateJTe*tFieldip; privateJTe*tFieldport; privateuttonbtn_server; privateuttonbtn_client; privateuttonbtn_backGroundCol; privateuttonbtn_fontCol; privateJTe*tFieldsend_te*t; privateuttonbtn_send; privateuttonbtn_close; privateJLabelpic; privateSocketskt;publicvoidrun() { try{ BufferedReaderbr=newBufferedReader(newInputStreamReader(skt.getInputStream())); while(true){ Strings=br.readLine();//从网络读if(s==null)break; ta.append(s+"\n"); } } catch(E*ceptione){ e.printStackTrace(); } } publicvoidactionPerformed(ActionEvente) { if(e.getSource()==btn_server){ doServer(); } if(e.getSource()==btn_client){ doClient(); } if(e.getSource()==btn_send){ doSend(); } } publicvoiddoServer() { try{ServerSocketserver=newServerSocket(Integer.parseInt(port.getTe*t()));skt=server.accept(); ta.append("连接成功!\n"); newThread(this).start(); } catch(E*ceptione){ ta.append("效劳器启动失败!\n"); } } publicvoiddoClient() { try{ skt=newSocket(ip.getTe*t(),Integer.parseInt(port.getTe*t())); ta.append("连接成功!\n"); newThread(this).start(); } catch(E*ceptione){ ta.append("连接失败!\n"); } } publicvoiddoSend() { Calendarc=Calendar.getInstance(); inty=c.get(c.YEAR); intM=c.get(c.MONTH)+1; intd=c.get(c.DAY_OF_MONTH); inth=c.get(c.HOUR_OF_DAY); intmm=c.get(c.MINUTE); intss=c.get(c.SECOND); try{ PrintWriterpw=newPrintWriter(skt.getOutputStream()); Strings=send_te*t.getTe*t(); if(s==null)return; ta.append(y+"-"+M+"-"+d+""+h+":"+mm+":"+ss+"\n"); ta.append(s+"\n"); pw.println(y+"-"+M+"-"+d+""+h+":"+mm+":"+ss); pw.println(s); pw.flush(); send_te*t.setTe*t(""); } catch(E*ceptione){ ta.append("发送失败!\n"); } } publicchatHouse() { super("聊天室"); this.setBounds(100,100,550,430); Containercc=this.getContentPane(); JPanelp1=newJPanel(); cc.add(p1,BorderLayout.NORTH); JPanelp2=newJPanel(); cc.add(p2,BorderLayout.CENTER); JPanelp3=newJPanel(); cc.add(p3,BorderLayout.SOUTH); pic=newJLabel(newImageIcon("12.gif")); cc.add(pic,BorderLayout.EAST); p1.add(newJLabel("IP:")); ip=newJTe*tField("",10); p1.add(ip); p1.add(newJLabel("Port:")); port=newJTe*tField("7777",4); p1.add(port); btn_server=newutton("侦听"); p1.add(btn_server); btn_client=newutton("连接"); p1.add(btn_client); btn_backGroundCol=newutton("背风光"); p1.add(btn_backGroundCol); btn_fontCol=newutton("字体颜色"); p1.add(btn_fontCol); p2.setLayout(newBorderLayout()) ta=newTe*tArea(); p2.add(ta,BorderLayout.CENTER); send_te*t=newJTe*tField("Hello."); p2.add(send_te*t,BorderLayout.SOUTH); btn_send=newutton("发送"); p3.add(btn_send,BorderLayout.WEST); btn_close=newutton("关闭"); p3.add(btn_close,BorderLayout.CENTER); //---------------------------------------"关闭"按钮监听器btn_close.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){System.e*it(100);}}); //--------------------------------------- 背景变色监听btn_backGroundCol.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){JColorChooserchooser4=newJColorChooser();Colorcolor=chooser4.showDialog(null,"背景颜",Color.yellow);ta.setBackground(color);}});//---------------------------------------字体变色监听btn_fontCol.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){JColorChooserchooser4=newJColorChooser();Colorcolor=chooser4.showDialog(null,"字体颜色",Color.black);send_te*t.setForeground(color);ta.setForeground(color);}}); //---------------------------------------按ENTER键可发送监听btn_server.addActionListener(this); btn_client.addActionListener(this); btn_send.addActionListener(this); setDefaultCloseOperation(JFrame.E*IT_ON_CLOSE); send_te*t.addKeyListener(newKeyAdapter(){ publicvoidkeyPressed
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 修理厂维修合同范本
- 二零二四年度房地产买卖合同标的及属性3篇
- 2024至2030年中国蒜苔行业投资前景及策略咨询研究报告
- 设备采购合同协议书
- 2024年度吊车租赁费用支付协议3篇
- 2024至2030年鸟类玩具项目投资价值分析报告
- 2024至2030年煤矿生产安全监控系统项目投资价值分析报告
- 2024至2030年木质百叶窗项目投资价值分析报告
- 2024至2030年国永银行个人理财系统项目投资价值分析报告
- 2024至2030年分散蓝光红项目投资价值分析报告
- 2024年交通安全考试题
- 2023-2024年度内蒙古自治区安全员之C2证(土建安全员)基础试题库和答案要点
- 2024年二级建造师继续教育题库及答案(500题)
- Flink实时大数据处理技术 课件 01章.Apache Flink概述
- 智慧养老综合服务协议
- 工艺真空系统培训介绍PV系统工艺流程及设备
- (正式版)JTT 1498-2024 公路工程施工安全监测与预警系统技术要求
- 温州市2024届高三第三次适应性考试(三模)英语试卷(含答案解析)
- 2023年四川省绵阳市中考数学试卷
- MOOC 公文写作规范-黑龙江大学 中国大学慕课答案
- 医院安保工作实施方案
评论
0/150
提交评论