java聊天系统代码.doc_第1页
java聊天系统代码.doc_第2页
java聊天系统代码.doc_第3页
java聊天系统代码.doc_第4页
java聊天系统代码.doc_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

南华大学Java论文论文题目:c/s聊天系统专业 09网络工程02班姓名曾亚平(20094360209)姓名刘明(20094360210)姓名龚泽辉20094360211)姓名郑建(20094360215)C/S聊天系统组员:曾亚平(20094360209),刘明(20094360210),龚泽辉20094360211),郑建(20094360215)任务分配:服务器端的侦听部分(刘明,龚泽辉,郑建)、服务器端(曾亚平,刘明)、 客户端部分(曾亚平,龚泽辉,郑建)摘要:随着互联网的快速发展,网络聊天工具已经作为一种重要的信息交流工具,受到越来越多的网民的青睐。目前,出现了很多非常不错的聊天工具,其中应用比较广泛的有Netmeeting、腾讯QQ、MSN-Messager等等。该系统开发主要包括一个网络聊天服务器程序和一个网络聊天客户程序两个方面。前者通过Socket套接字建立服务器,服务器能读取、转发客户端发来信息,并能刷新用户列表。后者通过与服务器建立连接,来进行客户端与客户端的信息交流。其中用到了局域网通信机制的原理,通过直接继承Thread类来建立多线程。开发中利用了计算机网络编程的基本理论知识,如TCP/IP协议、客户端/服务器端模式(Client/Server模式)、网络编程的设计方法等。在网络编程中对信息的读取、发送,是利用流来实现信息的交换,其中介绍了对实现一个系统的信息流的分析,包含了一些基本的软件工程的方法。经过分析这些情况,该局域网聊天工具采用Eclipse为基本开发环境和java语言进行编写,首先可在短时间内建立系统应用原型,然后,对初始原型系统进行不断修正和改进,直到形成可行系统本论文通过java的Socket实现了一个基于局域网和网络的聊天室的程序的开发-基于java的C/S模式网络聊天室的设计与实现。本论文详细介绍其设计和实现过程。关键词:聊天 客户端 信息 服务器端用Java实现C/S聊天系统C/S (Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。 传统的CS体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client端还是Server端都还需要特定的软件支持。由于没能提供用户真正期望的开放环境,C/S结构的软件需要针对不同的操作系统系统开发不同版本的软件, 加之产品的更新换代十分快,已经很难适应百台电脑以上局域网用户同时使用。而且代价高, 效率低基本思想是将用户界面同企业逻辑分离,把信息系统按功能划分为表示、功能和数据三大块,分别放置在相同或不同的硬件平台上。如果企业需要更改业务,开发人员只要修改一下实现此业务的中间层即可。中间件是在计算机硬件和操作系统之上,支持应用软件开发和运行的系统软件。能够使应用软件相对独立于计算机硬件和操作系统平台。人们日常生活中越来越多地使用这项新技术来为自己的工作和学习服务。一个操作简单、友好、运行稳定的网络聊天室对于小型局域网内的用户可以起到很好的交流作用。本聊天室,所谓聊天室就是一个可以让许多用户同时互相通信的网上园地,个人用户可以通过网上聊天室将自己融入整个主流社会中。因此,在网上聊天室这个虚拟的社会中,可以结交各层次各地方的朋友,从而为自己获取更多的知识和更多的阅历。 该聊天室是为许多喜爱上网聊天的朋友开发设计的,希望能在现有的众多聊天室中给大家多一种的选择。和许多大型的网络聊天室相比该小聊天室功能比较简单,但是实现了聊天的基本功能,点对多聊天,点对点聊天等,基于时间和技术的原因,很遗憾传送文件、发送图片、视频聊天等尚未实现。中间件的工作机制是:客户端从网络中的某个地方获取一定的数据或服务,这些数据或服务可能处于一个运行着不同操作系统和特定查询语言数据库的服务器中。客户/服务器应用程序负责数据的部分只需访问一个中间件系统,由中间件完成到网络中找到数据源或服务,进而传输客户请求、重组答复信息,最后将结果送回应用程序的任务。其体系结构如图所示。在三层C/S体系结构中:客户机仅实现业务的表示层,以及最简单的业务规则。如编号的合法性、数据是否允许空值等。负责接收客户的输入信息,并将输入信息发送给中间件服务器,客户机接收来自中间件服务器的结果信息并显示给客户。中间件服务器(组件服务器)实现大部分的客户业务规则。这些规则包括建立与后台数据库的连接,将客户机发送过来的数据按照业务规则进行分类、加工和处理,生成相应的SQL语句发送给数据库服务器,同时接收数据库服务器返回的数据或状态,并返回给客户机。在网络中可以有多台中间件服务器。为了进一步提高系统的效率,可以将企业的业务进行大类分类。同类业务规则的实现放在同一台中间件服务器上,使得企业的业务处理达到真正的分布式处理。客户机访问中间件服务器是通过其接口实现的。所有对数据库的操作封装在中间件中,因此在很大程度上保证了数据库的安全。数据库服务器的功能与C/S结构是一样的,只不过其结果数据是返回给中间件服务器,而不是客户机。三层是多层体系结构的基础,中间件服务器可以再访问中间件服务器,这样就形成了多层体系结构。多层应用程序的体系结构有很多强过客户/服务器的优点:业务规则集中、瘦客户体系结构、自动错误调和、负载平衡、可重用性、灵活性、可管理性、易维护性等一系列优良的特性。开发C/S体系结构采用的主要工具有:(1) Borland 公司的Delphi 7,Jbuilder2005。(2) Sybase 公司的Powerbuilder10.5。(3) 微软公司的VB、VF等。分析任务聊天系统不外乎两个方面,服务器端和客户端。简单分析一下两个方面所要完成的任务,对设计这个程序来说,等于完成了一半。首先来看一下服务器端的任务: 1服务器端应当建立一个ServerSocket,并且不断进行侦听是否有客户端连接或者断开连接(包括判断没有响应的连接超时)。 2服务器端应当是一个信息发送中心,所有客户端的信息都传到服务器端,由服务器端根据要求分发信息。 以上就是服务器端最主要的两个任务。不难看出,服务器端的任务并不复杂。 客户端应该完成的工作包括: 1与服务器端建立通信通道,向服务器端发送信息。 2接收来自服务器的信息。 相对服务器而言,客户端的任务更加简单,有了以上的简单分析,可以知道,解决上述四个问题,即完成了该聊天系统的核心。进一步分析系统结构。一个网络聊天室的运行,首先是要有一个完整稳定的服务器端,并且拥有很多个服务器端。客服端要具有实现用户注册和用户登陆,在登陆成功后,要显示出公聊界面,实现聊天功能并且能够发送表情和保存聊天内容和显示聊天记录等功能,在新用户上线和用户下线时要更新每个客户端在线用户列表名,并且可以和在线的用户实现一对一的私聊功能。 在服务器端可以实现不断的监听客服的连接,并且根据客户端发送过来的不同信息如注册信息,登录信息,公聊信息,私聊信息,退出信息等,服务器端要做出不同的响应,并且要实现数据库的操作,如根据用户注册的信息保存数据库中,根据登录时发送来的用户名和密码检测是否合法用户等。 完成上述分析之后,就开始对每个问题展开研究。聊天室的发展 聊天室做为即时通讯的一种,即时通讯(Instant Messenger,简称IM)软件可以说是目前我国上网用户使用率最高的软件,无论是老牌的ICQ,还是国内用户量第一的腾讯,以及微软的MSN Messenger都是大众关注的焦点,它们能让你迅速地在网上找到你的朋友或工作伙伴,可以实时交谈和互传信息。而且,现在不少IM软件还集成了数据交换、语音聊天、网络会议、电子邮件的功能。 IM软件的历史并不久远,但是它一诞生,就立即受到网民的喜爱,并风靡全球。在它的发展史上,以色列人是功不可没的。正是四位以色列籍的年轻人,在1996年7月成立的Mirabilis公司,并于同年11月推出了全世界第一个即时通讯软件ICQ,取意为“我在找你”“I Seek You”,简称ICQ了。直到现在,ICQ已经推出了它的2002a版本,在全球即时通讯市场上占有非常重要的地位。 目前,国内最为流行的即时通讯软件是OICQ(简称)。它以良好的中文界面和不断增强的功能形成了一定的网络文化。Messenger虽出道较晚,但依托微软的强大背景,实力也不可小视。作为Windows XP的一部分,Messenger 整合了操作系统的许多功能,如多种形式的聊天选择、多人的单窗口讨论式交流以及充分的文件与桌面共享功能等。它的令人耳目一新的中文界面和注册方式,连同它强大的功能,着实吸引了众多的眼球的注视,此外还有许多有特点的IM软件。聊天室设计1.客户端功能模块 用户注册功能,实现用户的登陆ID注册和个人信息,并存入服务器数据库中。 用户登录功能,实现合法注册用户的登陆。 私聊功能,实现用户和在线的其他用户一对一的聊天方式。 公聊功能,实现用户和在线的所有用户聊天方式。 显示时钟功能。 查看聊天记录,实现用户查看已聊天的历史聊天内容。 发送表情和设置聊天内容字体,并可以设置字体颜色和背景色等。2.服务器端功能模块 可以不断的监听客户端请求 显示登陆客户的信息、当前在线人数、服务器开启状态、保存日志、用户在线列表 发送系统消息3.数据分析和设计数据库在信息管理系统中占有非常重要的地位,其设计的好坏直接影响到整个系统的效率和性能。设计数据库系统时,首先要完成系统的需求分析,包括现有的已及将来可能添加的需求,从而使整个系统具有很好的可扩展性。 1、 数据库需求分析 2、 数据库概念设计 3、 数据库逻辑结果设计4.聊天系统细化当用户聊天时,将当前用户名、聊天对象、聊天内容、聊天语气和是否私聊进行封装,然后与服务器建立Socket连接,再用对象输出流包装Socket的输出流将聊天信息对象发送给服务器端。 当用户发送聊天信息时,服务端将会收到客户端用Socket传输过来的聊天信息对象,然后将其强制转换为Chat对象,并将本次用户的聊天信息对象添加到聊天对象集Message中,以供所有聊天用户访问,具体实现过程如图3-6所示。 接收用户的聊天信息是由多线程技术实现的,因为客户端必须时时关注更新服务器上是否有最新消息,在本程序中设定的是3秒刷新服务器一次,如果间隔时间太短将会增加客户端与服务器端的通信负担,而间隔时间长就会让人感觉没有时效性,所以经过权衡后认为3秒最佳,因为每个用户都不可能在3秒内连续发送信息。 当每次用户接收到聊天信息后将会开始分析聊天信息然后将适合自己的信息人性化地显示在聊天信息界面上。普通用户登录/退出系统 用户发送登录请求,客户端获取用户登录信息并发送到服务器端,服务器启动用户登录管理线程,获取用户名和密码进行登录验证,将验证结果返回客户端显示用户注册 用户第一次进入聊天室时需要进行用户注册才能登陆聊天室聊天。注册流程如下:用户提出注册请求,客服端响应,弹出注册信息对话框,用户输入相关信息并提交,客户端首先进行合法检查,确定无误后将数据信息发送给服务器端。服务器接收到请求后,启动单独得线程进行处理,首先进行合法性检查,确认登录名与系统中已注册得用户登陆名不相同后更新数据,并返回信息,客服端进行显示。发言是聊天室的核心功能,用户提出发言请求,客户端接受发言的内容和其他各种设置(公聊或私聊),打包发给服务器端。服务器接收到请求后确定聊天方式。服务结果最后显示在客户端。用户的需求具体体现在各种信息的提供、保存、更新和查询。这就要求数据存储能够充分得满足各种信息的输入和输出。收集基本数据、数据结构以及数据处理流程,组成一份详细得数据字典,为下一步具体设计做好充分的准现在需要将数据封装设计E-R图转化为能被实际数据库系统所支持的实际数据模型。 Customer.java 对登陆的用户进行封装,包括:用户名 密码,用户头像。 Register_Customer.java对注册信息进行封装,包括:用户名,密码,性别,年龄,电子邮箱,用户头象。 Message.java对服务器端消息进行封装,包括:用户在线对象集,聊天信息集,被踢者姓名,公告。 Chat.java对客户端信息进行封装,包括:发言人用户名,聊天内容接受对象用户名聊天语气是否私聊。 Exit.java对退出用户进行封装,包括:退出者用户名。下面是具体的步骤:一、服务器端的侦听。 首先是服务器端的侦听。由于服务器端要和多个客户端同时进行通信,那么系统的部分肯定必须用多个线程来完成,一旦服务器发现一个新的客户端与之建立了连接,就马上建立一个线程与该客户端进行通信。用多线程的好处在于,多个通信连接可以同时处理,不会出现由于数据排队等待而发生的延迟或者丢失,可以很好地利用系统的性能。侦听数据库表messages是否有未发送信息,信息包括:即时发送和定时发送,是即时发送的话就向客户机发出连接请求,连接成功就把短信内容和用户编号发送到客户端,是定时发送的话,再判断定时的时间是否当前时间,如果是,同样发送给客户端,如果不是当前时间则跳过。继续侦听。服务器端如何来侦听客户端的请求的。主要通过两个socket类:1 ServerSocket 运行在服务器端,用来侦听来自客户端的socket请求。2 Socket 向服务器端发送请求。登陆流程:1、服务器开启。2、客户端登陆,向服务器发送登陆信息,服务器验证登陆信息,存储用户信息,返还当前用户列表,断开连接。验证用户是否存在流程:1、客户端每隔一定时间,向服务器端发送“alive”报文,服务器端认为用户仍然登陆,并且返还当前可用用户列表。2、如果客户端超过一定时间不向服务器发送alive报文,则服务器端认为用户已经掉线,从可用用户列表中删除该用户。发送消息流程:客户端A发送报文给服务器端,服务器端转发报文给客户端B,如果客户端B成功接收,则返回报文给服务器端,服务器端将客户端B成功接收的信息返回给客户端A。二、服务器端一个网络聊天室的运行,首先是要有一个完整稳定的服务器端,并且拥有很多个服务器端。客服端要具有实现用户注册和用户登陆,在登陆成功后,要显示出公聊界面,实现聊天功能并且能够发送表情和保存聊天内容和显示聊天记录等功能,在新用户上线和用户下线时要更新每个客户端在线用户列表名,并且可以和在线的用户实现一对一的私聊功能。 在服务器端可以实现不断的监听客服的连接,并且根据客户端发送过来的不同信息如注册信息,登录信息,公聊信息,私聊信息,退出信息等,服务器端要做出不同的响应,并且要实现数据库的操作,如根据用户注册的信息保存数据库中,根据登录时发送来的用户名和密码检测是否合法用户等。经为每一个连接着的客户端建立了一个线程,这个线程好比一根电话线一直等待客户端说话,而信息发送中心就相当于一个总台,一旦有人打电话进来,就通过电话线把信息传 完成了服务器端的第一个的任务,那么第二个任务也就不难解决了。上面已送到总台,再由总台根据需要将这个信息发送给接收群。这样就意味着,服务器每接受一条信息,就要调用一次信息发送中心的方法,并将这条信息发送到所有客户端(或者特定的某个某几个客户端)。电脑每做的一次动作,一个步骤,都是按照以经用计算机语言编好的程序来执行的,程序是计算机要执行的指令的集合,而程序全部都是用我们所掌握的语言来编写的。所以人们要控制计算机一定要通过计算机语言向计算机发出命令。 侦听服务器发送的连接请求,有请求就接收发来的信息,并通过短信猫发出去单的说,服务器端是为客户端服务的,服务的内容诸如向客户端提供资源,保存客户端数据等等.客户端可以是任意的一台电脑,只要它和服务器端存在连接,并且得到了服务器端的授权,就可以使用服务器端的服务.象现在就可以理解为百度的网站是服务器端,我们现在使用的电脑就是客户端.我们可以使用它的服务.通常的服务器端都是服务器级的高级PC,以便多客户访问时不会造成延时甚至数据溢出.三、客户端。 再来看看客户端。由于客户端需要同时能够接收信息以及发送信息,所以也必须利用多个线程来实现。主线程用于接收用户输入的内容并将之发送到服务器端,而一个后台线程将一直接收来自服务器端的信息,并将之返回给客户端的用户。客户端(Client)或称为用户端,是指与服务器相对应,为客户提供本地服务的程序。除了一些只在本地运行的应用程序之外,一般安装在普通的客户机上,需要与服务端互相配合运行。因特网发展以后,较常用的用户端包括了如万维网使用的网页浏览器,收寄电子邮件时的电子邮件客户端,以及即时通讯的客户端软件等。对于这一类应用程序,需要网络中有相应的服务器和服务程序来提供相应的服务,如数据库服务,电子邮件服务等等,这样在客户机和服务器端,需要建立特定的通信连接,来保证应用程序的正常运行。 不过客户端及伺服端的关系不见得一定建立在两台分开的机器上,同一台机器中也有这种主从关系的存在。提供服务的伺服端及接受服务的客户端也有可能都在同一台机器上,例如我们在提供网页的服务器上执行浏览器浏览本机所提供的网页,这样在同一台机器上就同时扮演伺服端及客户端 这样,一个Server-Client结构的聊天系统基本就完成了。具体实现 首先建立一个Server类,Server类完成一个侦听的工作,并为建立连接的客户端增加线程: public class Server static Socket socketlist = new Socket1000; public Server( int socketport ) throws IOException listenForConnecting( socketport ); /listenForConnecting方法用于侦听连接 private void listenForConnecting( int socketport ) throws IOException ServerSocket serversocket = new ServerSocket( socketport ); /关键是侦听的部分,用一个while循环来实现 while (true) Socket socket = serversocket.accept(); /一旦客户端连接进来,就增加一个线程用于与该客户端的通信,关键在于传递参数, /将Server类和客户端的sokcet都传送到这个通信线程 new ConnectionForClient( this, socket ); /SendMessageCenter方法用于发送信息给客户端 public void SendMessageCenter (String message,Socket socket) throws IOException /建立输出流,将信息发送给客户端 /你会发现一个用于储存客户端socket信息的数组socketlist,该数组在客户 /端连接或断开连接时更新数据,这里不详细讨论这个问题 for(int k=0;k ); /sendMessage方法将用户输入的信息发送给服务器 private void sendMessage( String message ) dataOut.writeUTF( message ); /程序开始执行 public static void main(String args) int socketport = 8765; String hostAddress = 11 /其实可以通过参数指定IP和端口,这里简化这个过程 new Client( hostAdress , socketport ); 这样,一个Server-Client结构的聊天系统的核心就完成了,当然这只是一个最简单的框架,要进一步完善的话还要进一步考虑很多问题,例如:其他问题 客户端发送的信息应该分为公用以及私有的信息,然后SendMessageCenter根据信息的类别来判断应该将信息发送给哪些用户。 拥有权限的客户端可以动态地建立聊天频道,然后SendMessageCenter还可以判断信息所属的聊天频道来决定向谁发送信息 客户端可以执行聊天命令,例如返回当前服务器的在线信息,返回某个用户的相关信息,退出聊天系统等等。 所有这些问题都可以通过Client与Server类的SendMessageCenter方法建立一个不很复杂的通信协议来完成。一个通信协议就是一组约定,将相关的信息制定一个格式标准,让接收方和发送方都知道这条信息将作为什么身份进行通信。 例如,发送方发送的信息为普通的聊天信息时,可以增加一个前缀:words = chatmessage + words,而发送一条要求返回在线名单的信息时,可以发送另一个前缀 words=returnonlinelist。 当SendMessageCenter接收到客户端信息时,首先判断message的前缀,如果是chatmessage,则传送给其他客户端,如果是returnonlinelist,则返回给该客户端一个OnlineList。 一般地,这样就制定了一个简单的通信协议。程序代码服务器端: package chatserver;import java.awt.Toolkit;import javax.swing.SwingUtilities;import javax.swing.UIManager;import java.awt.Dimension;/* Title: 网络聊天工具服务器端-Tommylee.NET* Description:* 网络聊天工具服务器端,由Tommylee.NET开发.具体,请联系Tommylee:QQ:279883152* Copyright: Copyright (c) 2007* Company: Tommylee.NET* author Tommylee* version 1.0*/public class ChatServer boolean packFrame = false; /* * Construct and show the application. */ public ChatServer() ServerFrame frame = new ServerFrame(); / Validate frames that have preset sizes / Pack frames that have useful preferred size info, e.g. from their layout if (packFrame) frame.pack(); else frame.validate(); / Center the window Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = frame.getSize(); if (frameSize.height screenSize.height) frameSize.height = screenSize.height; if (frameSize.width screenSize.width) frameSize.width = screenSize.width; frame.setLocation(screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2); frame.setVisible(true); /* * Application entry point. * * param args String */ public static void main(String args) SwingUtilities.invokeLater(new Runnable() public void run() try UIManager.setLookAndFeel(UIManager. getSystemLookAndFeelClassName(); catch (Exception exception) exception.printStackTrace(); new ChatServer(); ); Server的界面:package chatserver;import java.awt.BorderLayout;import java.awt.Dimension;import javax.swing.JFrame;import javax.swing.JPanel;import com.borland.jbcl.layout.XYLayout;import com.borland.jbcl.layout.*;import javax.swing.JButton;import javax.swing.JTextField;import javax.swing.JScrollPane;import javax.swing.JLabel;import java.awt.List;import javax.swing.JTextArea;import .*;import java.io.*;import java.util.Vector;import java.util.StringTokenizer;import java.lang.Thread;import java.awt.event.WindowEvent;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;/* Title: 网络聊天工具服务器端-Tommylee.NET* Description:* 网络聊天工具服务器端,由Tommylee.NET开发.具体,请联系Tommylee:QQ:497322552* Copyright: Copyright (c) 2007* Company: Tommylee.NET* author Tommylee* version 1.0*/public class ServerFrame extends JFrame JPanel contentPane; XYLayout xYLayout1 = new XYLayout(); JPanel jPanel1 = new JPanel(); JPanel jPanel2 = new JPanel(); JButton send = new JButton(); JButton sysexit = new JButton(); JButton link = new JButton(); JTextField jTextField1 = new JTextField(); JTextField jTextField2 = new JTextField(); BorderLayout borderLayout1 = new BorderLayout(); JPanel jPanel3 = new JPanel(); JScrollPane jScrollPane1 = new JScrollPane(); PaneLayout paneLayout1 = new PaneLayout(); JLabel jLabel2 = new JLabel(); JLabel jLabel1 = new JLabel(); JLabel jLabel3 = new JLabel(); List list1 = new List(); BorderLayout borderLayout2 = new BorderLayout(); JPanel jPanel4 = new JPanel(); JPanel jPanel5 = new JPanel(); JScrollPane jScrollPane2 = new JScrollPane(); PaneLayout paneLayout2 = new PaneLayout(); JLabel jLabel6 = new JLabel(); JLabel jLabel4 = new JLabel(); JLabel jLabel5 = new JLabel(); JTextArea jTextArea1 = new JTextArea(); /定义相关成员变量 ServerSocket serverSocket = null; /建立服务器的socket Socket socket = null;/用来存储一个连接套接字 Vector clients = new Vector(20);/用vector向量数组存储连接客户变量 public ServerFrame() try setDefaultCloseOperation(EXIT_ON_CLOSE); jbInit(); catch (Exception exception) exception.printStackTrace(); /* * Component initialization. * throws java.lang.Exception */ private void jbInit() throws Exception contentPane = (JPanel) getContentPane(); contentPane.setLayout(xYLayout1); this.setResizable(false); setSize(new Dimension(410, 330); setTitle(网络聊天工具服务器端-Tommylee.NET); send.setEnabled(false); send.setText(发送); send.addActionListener(new ServerFrame_send_actionAdapter(this); sysexit.setEnabled(false); sysexit.setText(退出); sysexit.addActionListener(new ServerFrame_sysexit_actionAdapter(this); link.setText(连接); link.addActionListener(new ServerFrame_link_actionAdapter(this); jPanel1.setLayout(borderLayout1); jPanel3.setLayout(paneLayout1); jLabel2.setText(IP地址); jLabel1.setText(用户名); jLabel3.setText(连接情况); jPanel2.setLayout(borderLayout2); jPanel4.setLayout(paneLayout2); jLabel6.setText(信息详情); jLabel4.setText(信息类型); jLabel5.setText(信息来源); jTextField1.setEditable(false); jTextArea1.setEditable(false); contentPane.add(jPanel1, new XYConstraints(4, 3, 394, 90); jPanel1.add(jPanel3, java.awt.BorderLayout.NORTH); jPanel1.add(jScrollPane1, java.awt.BorderLayout.CENTER); jScrollPane1.getViewport().add(list1); jPanel2.add(jPanel5, java.awt.BorderLayout.SOUTH); jPanel2.add(jPanel4, java.awt.BorderLayout.NORTH); jPanel2.add(jScrollPane2, java.awt.BorderLayout.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论