已阅读5页,还剩47页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目目 录录 前言前言 3 3 1 1 JAVAJAVA 的功能与编程的功能与编程3 3 11 JAVA的概述3 1.2 JAVA 的优势 5 1.3 JAVA 应用于网络 8 2 2 系统分析系统分析 1212 2.1 系统基本功能描述 .12 2.2 可行性分析 .12 2.3 课题来源 .13 2.4 需求分析 .13 3 3 系统总体设计系统总体设计 1414 3.1 数据库设计 .14 3.2 简易聊天工具系统的总体设计要点 .15 3 .3 简易聊天工具系统的设计步骤及功能模块划分.15 3.4 简易聊天工具系统各功能模块 .16 4 4 系统环境与测试系统环境与测试2626 4.1 开发环境工具26 4.2 硬件环境 .26 4.3 功能模块的测试26 参参 考考 文文 献:献: 2929 基于 Socket 的简易网络聊天系统的开发与设计 学生:庄炜杰 (指导老师:林建兵) (莆田学院信息工程学院) 摘要:摘要:随着网络技术的在校园中的普及,聊天工具已经成为一种必不可少的校内交流 工具,受到越来越多的同学的青睐。市场上有很多优秀的聊天工具,用的最广 范的最被人们所接受的有腾讯 QQ、MSN、人人网等等,但此简易聊天工具是专门 针对学校内部的特点使其在网络聊天产业中占有一席之地。该系统的开发主要 是服务器端和客户端两个方面。服务器端通过套接字与服务器建立连接,服务 器会接受客户端的请求,并且会按要求转发客户端所要传递的信息,刷新用户 信息。后者通过与服务器建立连接,来进行客户端之间 P2P 的信息交流。其中 用到了局域网通信机制的原理,通过实现 Runnable 接口建立多线程机制。开发 中使用了计算机网络编程技术,如 C/S 模式,多线程技术,网络通信等等。在 网络通信中,读取消息的和发送消息,是利用 Stream 来实现交换,其中介绍了 如何实现一个构建的信息交换,包含了基本的软件工程的方法。通过这些分析, 该简易聊天工具系统采用 Java 语言进行编写,本系统是以 Eclipse 为开发平台。 首先建立系统应用原型,然后进行修正和改进,直到完成可发布版系统。 关键词:局域网 聊天 套接字 Java Eclipse 简易聊天工具 Development and design of multiple client network chat system based on Socket Student:zhuang wei jie(Faclty Asviser:lin jian bing) Abstract: With the development of network technology in the campus of popularization, chat tools has become an indispensable tool in exchange, more and more students of all ages. There are a lot of good chat tools on the market, with the most extensive and most accepted with Tencent QQ, MSN, Renren and so on, but the client chat tool is designed according to the characteristics of internal school which occupies a space for one person in the industry in the Internet chat. The development of this system is mainly two aspects of server and client. The server through socket to establish a connection with the server, the server will accept the request of the client, and according to the requirements of the client message forwarding, refresh user information. The latter through a connection with the server, carries on communication between P2P client. Which uses the principle of LAN communication mechanism, establish multi thread mechanism by implementing the Runnable interface. Computer network programming technology is used in the development, such as C/S model, multithreading technology, network communication etc In the network communication, reading messages and send messages, is to achieve the exchange using Stream, which introduced the exchange to achieve a construction of information, including the basic methods of software engineering. Through these analyses, the client chat tool system using Java language, the system is based on Eclipse platform. First establishes the system application prototype, then revised and improved, until the complete release system. Key words: LAN Chat Socket Java Eclipse 前言 随着第三次技术革命的展开,互联网进入了千家万户,人们的生活随着网络的发展也发生着翻 天覆地的变化。人们在工作、学习、生活中对它的依赖越来越大。而聊天室成为了人们最常见, 最直接的网上聊天工具。它的主要功能就是聊天,提供了一个人与人之间开展人际交流的平台。 也是网络在现实中最实用的例子 。本文中描述的系统是基于 JAVA 技术而开发出的应用程序。能 过实时的根据用户的要求进行信息的传递,交互性高,能够快速的对客户的请求进行处理非常有效 的处理客户请,系统的更新和维护非常的方便,对运行所需要的环境要求较低。 1 JAVA 的功能与编程 11 Java 的概述 上世纪,Sun 公司根据需要开发出一种不同与以往语言的编程语言Java。各种类型的平台, 不同的背景和各种类型的机器都可以使用这种语言。Java 语言给计算机编程带来了又一次技术革 命;应用软件被彻底的其改变了编程模式。Internet 的主流语言正在逐渐被 Java 取代。向迅速发 展起来的信息世界增添了新的活力。 1991 年 Sun 公司成立了 Java 语言开发小组。一位非常优秀的工程师 James Gosling 担任该小 组的领导人,其目的是研制一种开发家用电器的逻辑控制系统。在开始写就 Java 时,Gosling 建 立了在一个分布式的、巨大的网格环境中运行的系统。在设计中 Gosling 采用了在一个操作系统上 以虚拟机的方式运行,这样一来,Java 就具备了平台无关性。在设计窗口时也采用相似的技术。 在用户界面中统一的技术描述,就保证了良好的用户界面的可移植性。 1.1 .1 Java 带来的影响 Java 自 1995 年诞生以来,虽时间不长,但是被业界的各大公司所接受, 现在,众多的企 业信息系统解决的最佳方案已经被 Intranet 所取代。它具有使用方便、费用低廉和管理方便的优 点。无论用户使用何种类型的机器,那种操作系统。浏览器的界面都是统一的,而在服务器中则存 放着应用程序、数据库和 Java 浏览器页面。管理人员不用在为用户的安装、升级和培训而感到苦 恼,由开发人员升级软件的版本,用户只需要一个操作软件下载安装软件就可以了。 随着 Java 的诞生计算机信息的交换进入了一个非常重要的里程碑。在 Java 出现之前;信息的 交换主要是是靠存储的共享和不同宿主机上运行的程序交换进行的,交换程序双方共同维护消息的 语义。在 Java 时代,网络上通过可执行的实体进行程序进程的交换。一个更高级的信息交换阶段, 有一定智能性的代理,不仅仅有数据的状态,还有数据的操作。 Java 的产生和互联网的崛起使得笨重繁杂的应用程序开始向小型化发展,Java 使得互相协作 的可执行的实体进行数据的传送与处理。加速了应用程序的网络化、小型化的趋势。使得软件不在 成为“少数人”的奢侈品,从而面向了“大众” ,收费少成为了网络应用软件的主要特点。分布式 的技术提供了用多少,就下载多少。随着 Java 和 Internet 的发展,应用软件的开发和使用方式 正在发生着翻天覆地的变化,传统的信息处理工具必然将被淘汰,因为信息只有共享和使用中才会 体现它的价值。 1.2 JAVA 的优势 1.2 .1 JAVA 的主要特点 Java 语言具有简单性、面向对象过程、分布式、解释执行、健壮性、 安全、体系结构中立、 可移植、性能高、多线程以及动态性的特点。 1.简单性 Java 最初的设计目的是为对家用电器进行简单易行的,方便用户使用的,可控的操作而开发 的一中编译语言,因此必须简单明了。其主要在以下三个方面体现: 1) Java 是以 c+为基础加以改变发展起来的;因此其的风格和 C+相似,所以对于 C+程 序员来说是很容易掌握的。 2) Java 放弃了 C+语言中容易引发程序指针和内存管理错误的缺点。 3) Java 提供了很多的类库。类提供了一些特定的功能,程序员可以直接使用。 2.面向对象 面向对象是相对与面向过程而言的,面向过程是相对于事件来说的 ,一个事件想要完成需要 经过那些过程。用函数的方式一步步的将这些步骤实现,实用的时候依次调用这些函数就可以了。 面向对象是有各种对象构成的,一个对象完成一些特定的功能,各个对象用接口的方式连接。例如: 人开门的事件,用面向对象的方法就是。首先人具有开门的功能,锁具有打开门的功能,开门时人 只需要调用锁的功能就可以了,不需要知道锁是如何打开的。提高了代码的复用性 3.分布性 Java 是面向对象的语言。TCP/IP 协议的使用是通过它所包含的类库,用户可以凭借统一资源 定位符打开并访问网络上的对象。 4.健壮性 Java 具有很好的程序自动检查错误的功能。Java 可以自动的检查内存中的错误;减少内存中 的出错,还提供了垃圾回收方法。防止程序员在编写程序时因忘记写内存管理代码而产生的错误。 在编译时,Java 可以帮助程序员减少程序的错误,对没有被处理的错误加以提示,以防止系统的 崩溃。 5.安全性 用于网络中分布式环境下的 Java 防止病毒的入侵。因为 Java 不支持指针,通过对象的实例变 量来访问内存;这样就防止病毒访问其私有成员,同时预防可因操作指针而产生的错误。 6.可移植性 平台无关性在体系结构中是独立的。使得 Java 程序客户端及服务器端可以被不同的系统在相 同的网络环境中使用,非常的方便。Java 中提供了许多可以被移植的类库,可以在不同的系统上 使用的接口。Java 语言实现了编译器,Java 运行时系统是由 C 实现,这使得 Java 系统本身也具 有可移植性。 7.多线程 多线程功能使得在一个程序里可同时执行多个进程。多线程的最大的好处是更好的实时的控制 性能和交互性能。同步机制保证了数据具有共享的特性。多线程使得程序开发者可以在不同的线程 完成不同的特定行为,而不需要采用全局的事件循环机制,这样就很容易地实现网络上的实时交互 行为。 8.动态性 随着面向对象设计方法的发展,Java 的动态性也随之产生。在程序运行过程中它允许实时的 装入所需要的类,使它适合于不断发展的环境。 1.2 .2 JavaApplet Applet 是创建在 html 上的 Java 程序;它是具有安全性、动态性、跨平台无关性特点的网络 应用程序。Java 语言的特点使的其可以将网络的利用达到最大化。这些由 Java 语言编写的程序嵌 入在特定的容器中;通常可以与用户进行交互式交流,产生特定的效果。 Java 中丰富的类库,它们提供了多线程、网络化、面向对象系统的需要。 1.主要包含两个最基本的包:实用包(Java.util)和语言包(Java.lang) 其包含的主要类: 语言包(Java.lang) 。String 类、class 类、Runtime 类、Object 类、Float 类和 Math 类 实用包(Java.util):Data 类、Vector 类、Arrays 类和 Enumeratin 接口 2. Socket 编程用低级网络包实现 3.网络支持 Internet 的网络通讯协议,提供了与 Internet 的接口。 它支持统一资源定位符连 接,简化了程序设计。 在操作符、变量声明、参数传递、流控制等方面;Java 使用了同传统语言相同的方法,使得程 序员可以非常方便地进行编程的开发。为了实现其特性, Java 也放弃了传统语言中很多不足的内 容。 1.全局变量 在 Java 程序中,本类中通过类定义公用的、静态的全局变量可以被其它类所使用。使得变量可 以被其他类所访问和修改。Java 更好的封装了变量,使的不会造成系统的崩溃。 2.Goto goto 语句在 Java 中是作为保留字的,不能被用于命名。在传统的语言中 goto 跳转语句是用 来处理遇到异常时的跳转;而在 Java 中是通过 try,Catch, final 等来处理遇到错误时跳转。使程 序更结构化。 3.内存管理 在传统的语言中内存是不能被自动分配和释放的。而 Java 中可以自动的进行的,可以避免因 程序员忘记写内存的分配而造成的系统崩溃,在 Java 中通过 new 运算符分配内存堆。同样也避免 因程序员忘记写内存的释放而造成的内存块也会逐渐耗尽系统资源,避免了资源的浪费,更好的利 用了系统资源。 4.类型转换 在 Java 中类型的转换主要包含 3 中情况,分别为自动转换、强制转换。自动转换就是源代码 中不用任何特殊说明,系统会自动进行转换。而强制转换是在低级类型向高级的类型中的转换。在 代码中不需要用任何说明,可以直接使用。 1.3 Java 应用于网络 网络上的文本、音频、视频等资源可以被 Java 程序获得。同时,处理这些资源。例如 Java 程 序可以获取某时间最新数据,并且显示出来。在处理上,会生成一个对象,然后用 Java 中的方法 获取该对象的资源。 例如:Java 从网络上获取图像并且加以显示,Java 中提供了相应的方法。 getImage(new URL(字符串) 其使用格式可有两种: String url = “结点 URL”; Image image; try image = getImage(new URL(url); catch(Exception e) System.out.println(“Cant open the URL “); 或 URL imgur=null; Image image; try imgur=new URL(“结点 URL “); catch (MalformedURLException e) System.out.println(“Cant open the URL “); image=getImage(imgur); 前一种格式用“new URL(url)”生成 URL 对象, 并直接作为 getImage 的参数, 后一种格式先用“new URL(url)”生成一个 URL 对象,再传给 getImage,两种格式本 质上是一样的。 以上仅是 Java 在客户端应用的一些方面,目前,Java 更广泛的应用是在服务器端。 1.3.1 IP/TCP (1)IP、TCP 协议的特点: TCP/IP(Transmission Control Protocol/Internet Protocol)传输控制协议/ 网际协议。是一组以 TCP 与 IP 为基础的相关协议的集合,该协议不是完全符合 OSI 的 七层参考模型,而是采用的四层结构,网络接口层、网际层、传输层、应用层。 网络接口层 对实际网络媒体进行管理,定义如何使用实际网络来传输数据。 网际层 负责提供基本的数据封装成包传送功能,但是并不能保证数据能正确的传送到目的主 机,工作在这一层的主要协议是 IP。 传输层 此层提供了点到点之间数据传输服务。如面向连接的传输控制协议(TCP)、面向无连 接用户数据报协议(UDP)。 IP 协议的作用:是 TCP/IP 协议族的核心,也是网际层中最重要的协议,接收有更 低层发来的数据包,并将该数据包发送到更高层,此外网际层也可以将从传输层接收 的数据包传送到更低层12。IP 是面向无连接的数据报传送,IP 将包文件传送至目的 主机后,不会对传送的内容进行效验。 TCP 协议的功能:TCP 是在传输层,提供了面向连接的数据包传送服务,保证数据 包能够正确的被传送与接收,包含内容的效验与包的顺序,损坏的包可以被重传。一 般不适合工作在局域网中。因为其提供的数据传送是会验证的,因此效率较低。 TCP/IP 协议具有以下特点: 1、协议标准是开放的,在计算机硬件及操作系统是独立的,使用是免费的。 2、允许 IP 协议在各种不同的网络上运行,具有分配网络地址的功能。 3、可以为各式各样的应用提供服务。 (2)端口号: 端口号的理论范围是 065535 之间,其中 01023 是保留端口大部分分配了特定 的应用协议。在 Java 中服务器端是有 ServerSocket 类来表示的,用它来监听指定的 端口并接收客户端的连接请求。计算机上的同一端口号只能分配一个唯一的 ServerSocket 对象,不能存在两个 ServerSocket 对象监听同一个端口。同时还要避免 没有被其它程序占用。计算机唯一服务的端口号是用 1024 之后的连接端口。 1.3.2 Socket Socket,简称套接字,是为了完成会话所需要的技术,是在客户端和服务器端实现 网络间进程通信的技术,套接字是在较低的层次上通信的。用于网络建立连接,当成 功的连接时;在程序的两端会产生实例,用于请求和接受会话,相当于一个管道。 开发原理: 服务器,使用特定类监听指定的端口,端口是由 102465535 之间的端口组成的, 当客户端提出连接请求时,会对其进行处理,产生会话;在会话结束后,关闭连接。 客户端,使用 Socket 对服务器的端口进行连接,成功后,就可以打开进行会话了; 当会话结束后,关闭资源。 Socket 程序的工作过程: 1、建立 Socket 连接:在通信开始之前首先确认程序的两端的实例是否对应;如 果对应就可以建立一个通道进行连接。 2、数据通信:利用虚拟连接通道传送数据信息进行通道。 3、关闭:通信结束时,再将所建的虚拟连接拆除。 具体如下: 图 1 socket 通信 主要步骤: 首先:主机 B 接受一个由主机 A 发送的的数据段;此数据段中包含了同步序列号 的标志位;建立连接,通过这个数据段,主机 A 向主机 B 发送同步请求;其中包含有 A 要和 B 建立通信;B 要用特定的数据段来回应 A。 其次:主机 B 收到主机 A 的请求后,必须进行同步请求应答。会向 A 反馈一个数据段, 向 A 说明已收到请求;且需要选择数据段来回应。 最后: A 收到这个数据包后,需要发送一个确认;回复 B:已收到回复,连接建立成功, 可以传递数据。 具体过程如下 主机 A 主机 B 图 2 主要步骤 2 系统分析 2.1 系统基本功能描述 客户端可以实现登陆,即时聊天,密码的修改,查看历史聊天记录,查看公告, 查看在线用户等功能。 服务器端应当建立一个 ServerSocket,用于不断进行侦听客户端是否有连接请求 或者断开连接。服务器端就是一个管理信息发送的控制中心;客户端要想进行信息的 传递,首先必须先将信息发送至服务器端,然后服务器再根据要求将信息发送至所要 发送的地点。 2.2 可行性分析 本系统可以从以下几个方面的内容进行可行性分析: (1) 技术可行性 使用 Swing 技术可以很方便的开发出 Java 图形界面窗口。 使用 socket 技术,可 以非常方便的、实用的、高效率的开发聊天系统;因此技术上是可以实现的。 (2) 经济可行性 在网络时代,计算机网络已经大范围的普及,因此在设备上不需要进行大范围的 SYN=1,SEQ= ACK=1,SYN=1,SEQ= aaaaaaaaaa ACK=1 第一次握手,主机 A 向 主机 B 发送连接请求 第二次握手,主机 B 收到主机 A 的请求,向主机 A 回发一个确认, ,同时向主机 A 发送一个连接请 求 第三次握手,主机 A 收 到主机 B 发送的数据包 在向主机 B 发送一个确 认连接 投入。仅需开发软件,因此经济上是可行的。 (3) 操作可行性 只要一台以上计算机连接在同一个局域网内,本系统就可以安装使用,所以操作 上完全不存在问题。 2.3 课题来源 根据时下校园的普遍需求,专用的针对学校的简易聊天工具软件越来越受同学们青 睐。因此开发简易聊天工具是相当有必要的。拥有一款针对学校内部的简易聊天工具 聊天软件,不仅可以方便同学们在网络故障时的交流,同时可以增加沟通。本人在大 学时学习过 JAVA 语言和网络编程,为了更好的有效的检验自己的技术能力,本人就决 定以端对端简易聊天系统为毕业设计,希望通过这一次的能进一步提高本人的 java 编程的能力。 2.4 需求分析 简易聊天工具主要有两个方面:服务器端和客户端。首先要先了解一下服务器端 和客户端要完成的任务,了解了这些那么任务就完成了一半。 客户端要完成的工作包括: 与服务器端建立发送信息的通信通道。 对服务器端发送的信息进行接收。 3. 更改当前用户自身的信息,如密码等。 与服务器相比,客户端的任务更加简单,通过分析,我们可以了解,简易聊天工 具系统的核心就是这些问题。 3 系统总体设计 3.1 数据库设计 本系统中的主要实体和其属性有: 1.用户(ID,用户名,密码,年龄,性别,住址,注册时间) E-R 模型如图所示。 user Name password age sex 图 3 系统实体及其属性 1.用户表 表 1 用户表 user 属性名数据类型字段说明备注 Idint(6)ID 主键(自动增一) namevarchar(10) 用户名非空 passwordvarchar(10) 用户密码非空 ageint(3) 年龄 sexsex char(2) 性别 3.2 简易聊天工具系统的总体设计要点 本简易聊天工具系统的设计与其他普通聊天软件的设计有着很多的不同地方,普 通聊天软件的设计有很多要考虑的因素,例如,普通聊天软件需要对程序的图形窗口 以及布局进行了大量美化工作,而简易聊天工具只是满足的用户的基本的聊天需求。 因此,在设计简易聊天工具系统的过程中,以下几个设计要点是必须要考虑的重点: 1、实现思想 在网络上的聊天工具一般都是服务器提供的连接响应。用户以客户端为平台连接 到服务器,那么用户在同一服务器上就可以聊天了。因此需要实现客户端与服务器端 的功能。 2、服务器端工作流程 客户端发送请求连接,用户登录,然后进行审核,审核通过后则表示用户成功登 录;然后就可以接受客户端发送的信息,再根据需要进行信息的处理;将信息传递至 将要传递的客户端。 3、客户端工作流程 客户端程序与服务器端程序相比就简单了,客户端需要与服务器端成功的连接, 然后寻找相同的 Socket,通过这个 Socket 来发送和接收数据就可以了。 3 .3 简易聊天工具系统的设计步骤及功能模块划分 聊天系统工作原理图如下: 图 6 工作原理图 3.4 简易聊天工具系统各功能模块 3.4.1 服务器端功能: 服务器端 启动与停止服务 查看在线用户详细信息 修改学校信息 部门信息维护 用户信息维护 发送信息 图 7 服务器功能 服务器端的主要功能包括:启动服务、停止服务、在线用户详细信息的查看、发 送接受到的客户端信息、修改学校信息、部门信息的维护、用户信息的维护。 3.4.2 客户端功能划分为以下模块: 客户端 客户端的连接与断开 更新用户信息 查看同学信息 聊天内容的保存打开 聊天内容的删除 发送消息 图 8 客户端功能 客户端的主要功能包括:客户端的连接与断开、更新用户信息、发送消息、查看同学 信息、聊天内容的打开保存删除 3.4.3 登录模块 流程图如下 开始 填写用户 信息 验证用户信息 验证用户 结束 接收离线 信息 成功 失败 发送登陆 失败信息 图 9 登录流程图 输入: 管理员账号或者用户帐号和对应的密码。 处理: 检索该用户名是否存在于数据库中,若能检索到,那就在数据库中查找该 用户名对应的密码是否正确,再根据用户的权限进入相应的业务范围和正常的流程, 输出: 相应权限的页面。 登录模块主要代码: package qq_client_jframe; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.GridLayout; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.ListIterator; import java.util.Vector; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.DefaultComboBoxModel; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JTextField; import javax.swing.border.Border; import qq_client_jdialog.ResetPassword_JDialog; import qq_client_jdialog.user_add_JDialog; import listener.QQ_Login_Button_Listener; import mytools.LogsReaderWriter; /* * 这是一个 QQ 登录窗体类,它继承自 javax.swing.JFrame * author Devon * */ public class QQ_Login_JFrame extends JFrame private JComboBox comboBox_ID = new JComboBox(); private JPasswordField passwordField_Password = new JPasswordField(“123456“); private JPanel panel_NetOption = null; private JLabel label_NetOption = new JLabel(); private JButton button_NetOption = new JButton(“设 置“); private JButton button_Add = new JButton(“注册“); private JButton button_Login = new JButton(“登 录“); private JButton button_Exit = new JButton(“退 出“); private File file = new File(“id/id.txt“); private JComboBox comboBox_IP = new JComboBox(new String“127.0.0.1“); private JTextField textField_Port = new JTextField(“6000“); private user_add_JDialog user_add_JDialog = null; private ObjectOutputStream objectOutputStream = null; private ObjectInputStream objectInputStream = null; private String ID = null; private String name_ID = null; /* * 构造一个登录窗体 */ public QQ_Login_JFrame() super(“QQ 用户登录“); /初始化 QQ 号码框, launchComboBox_ID(); this.panel_NetOption = this.makeNetOption(); this.panel_NetOption.setVisible(false); this.makeAll(); this.setResizable(false); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.pack(); this.setLocationRelativeTo(null); this.setVisible(true); /* * 生成一个显示在登录窗体上的有图片的 JLable * return显示在登录窗体上的有图片的 JLable */ private JLabel makeLoginImage() Icon i = new ImageIcon(“image/QQ_Login.jpg“); JLabel l = new JLabel(i); return l; /* * 生成一个登录区域的 JPanel * return一个登录区域的 JPanel */ private JPanel makeLoginArea() JPanel p = new JPanel(); BoxLayout bl = new BoxLayout(p,BoxLayout.PAGE_AXIS); p.setLayout(bl); /p.setBackground(Color.getHSBColor(54, 0.2f, 0.2f);/颜色 Border border1 = BorderFactory.createEmptyBorder(5,5,5,5); Border border2 = BorderFactory.createLineBorder(Color.blue); Border border3 = BorderFactory.createTitledBorder(border2, “QQ 登录“); Border bordercom = BorderFactory.createCompoundBorder(border1, border3); p.setBorder(bordercom); /p.setBorder(border1); /p.setBorder(border2); /p.setBorder(border3); JPanel panel_ID = new JPanel(); JLabel label_ID = new JLabel(“QQ 号码:“); /l1.setPreferredSize(new Dimension(50,23); panel_ID.add(label_ID); comboBox_ID.setPreferredSize(new Dimension(175,23); comboBox_ID.setEditable(true); panel_ID.add(comboBox_ID); JPanel panel_Password = new JPanel(); JLabel label_Password = new JLabel(“QQ 密码:“); /l2.setPreferredSize(new Dimension(50,23); panel_Password.add(label_Password); passwordField_Password.setPreferredSize(new Dimension(175,23); passwordField_Password.setEchoChar(); panel_Password.add(passwordField_Password); p.add(Box.createRigidArea(new Dimension(1,20); p.add(panel_ID); p.add(Box.createRigidArea(new Dimension(1,10); p.add(panel_Password); p.add(Box.createRigidArea(new Dimension(1,30); return p; /* * 生成一个按钮区域的 JPanel * return一个按钮区域的 JPanel */ private JPanel makeButton() JPanel p = new JPanel(); QQ_Login_Button_Listener listener = new QQ_Login_Button_Listener(user_add_JDialog, this); button_NetOption.setPreferredSize(new Dimension(70,23); button_NetOption.addActionListener(listener); button_Add.setPreferredSize(new Dimension(70,23); button_Add.addActionListener(listener); button_Login.setPreferredSize(new Dimension(70,23); button_Login.addActionListener(listener); button_Exit.setPreferredSize(new Dimension(70,23); button_Exit.addActionListener(listener); p.add(this.button_NetOption); p.add(Box.createRigidArea(new Dimension(10,1); p.add(this.button_Add); p.add(Box.createRigidArea(new Dimension(10,1); p.add(button_Login); p.add(Box.createRigidArea(new Dimension(10,1); p.add(this.button_Exit); return p; /* * 生成登录界面 JPanel * return登录界面 JPanel */ private JPanel makeMain() JPanel panel = new JPanel(new BorderLayout(); panel.add(this.makeLoginImage(),BorderLayout.NORTH); panel.add(this.makeLoginArea(),BorderLayout.CENTER); panel.add(this.makeButton(),BorderLayout.SOUTH); return panel; /* * 生成网络设置 JPanel * return网络设置 JPanel */ private JPanel makeNetOption() JPanel panel = new JPanel(new GridLayout(3,1); Border border1 = BorderFactory.createEmptyBorder(5,5,5,5); Border border2 = BorderFactory.createLineBorder(Color.BLUE); Border border3 = BorderFactory.createTitledBorder(border2,“网络设置“); Border bordercom = BorderFactory.createCompoundBorder(border1, border3); panel.setBorder(bordercom); JPanel panel0 = new JPanel(); label_NetOption.setForeground(Color.red); panel0.add(label_NetOption); JPanel panel1 = new JPanel(); JLabel label1 = new JLabel(“服务器地址:“); label1.setPreferredSize(new Dimension(68,23); comboBox_IP.setEditable(true); comboBox_IP.setPreferredSize(new Dimension(175,23); panel1.add(label1); panel1.add(comboBox_IP); JPanel panel2 = new JPanel(); JLabel label2 = new JLabel(“端 口 号:“); label2.setPreferredSize(new Dimension(68,23); textField_Port.setPreferredSize(new Dimension(175,23); panel2.add(label2); panel2.add(textField_Port); panel.add(panel0); panel.add(panel1); panel.add(panel2); return panel; /* * 生成集成了登录界面与网络设置界面的总窗体 */ private void makeAll() this.add(this.makeMain(),BorderLayout.CENTER); this.add(this.panel_NetOption,BorderLayout.SOUTH); /* * 登录成功时,使用此方法可将本次登录号码如不存在则存入 ID 文 件末尾,否则将取代原有位置上的号码(即被移动到末尾) */ public void autoAppendID() LogsReaderWriter.createNewFile(file.getPath(); String id = comboBox_ID.getSelectedItem().toString(); FileWriter fileWriter = null; BufferedWriter bufferedWriter = null; FileReader fileReader = null; BufferedReader bufferedReader = null; StringBuffer stringBuffer = new StringBuffer(); try String row = “; fileReader = new FileReader(file); bufferedReader = new BufferedReader(fileReader); while(row = bufferedReader.readLine() != null) /id 重复时不加 if(row.equals(id) continue; stringBuffer.append(row + “n“); /本次登录使用的 id 加到末尾 stringBuffer.append(id + “n“); fileWriter = new FileWriter(file, false); bufferedWriter = new BufferedWriter(fileWriter); bufferedWriter.write(stringBuffer.toString(); bufferedWriter.flush(); catch (FileNotFoundException e1) /e1.printStack
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东省安全员B证考核模拟试题
- 2025年钳工实操考试试题
- 公路水运工程试验检测人员考试参考试题(附答案)
- 《企业战略管理》复习题
- 2025年《汽车保险与理赔》相关知识试题库与答案
- 2025年创建全国文明城市知识竞赛题
- 岢岚县事业单位考试真题2022
- 2025年【湖南省安全员-C证】考试题及答案
- 四川省专升本计算机基础-试卷7-真题-无答案
- 单招计算机应用基础计算机病毒与防治测试卷
- 学习宪法精神争做守法青年
- 胰岛素抵抗综合管理方案与减重训练
- 《红岩》第03章+带读课(课件)
- 梅毒课件教学课件
- 2025年生产经营单位主要负责人和安管人员考试综合试题及答案
- (2025年)公安基础知识专业科目考试模拟试题(附答案)
- 村两委换届知识培训内容课件
- 2026届高三上学期华师联盟联考10月月考英语试卷
- 互联网营销师题库及答案
- 团餐生产安全培训内容课件
- 《质量管理学》课件-9第九章 质量功能展开
评论
0/150
提交评论