基于Java的简单网络聊天室编程
一种基于Java技术的聊天室系统的设计与实现

一
种基于 Jv 技术的聊天室系统的设计与实现 aa
胡少 峰 , 赵 克 , 春 霞 耿
707 ) 1 0 1 ( 安 电子 科 技 大 学 研 究 生 院 , 安 西 西
摘 要 : 章 简 要 介 绍 了 J P ( a a S r e a e 文 S J v e v r P g )以 及 J C ( a a aa a e DB J v D tb s
J E E B等 。J v 2 E、 J a a技 术 从 推 出 至 今 仅 几 年
的时 问 , 以其 完 全 的 面 向对 象 风 格 , 作 平 就 操
台 的无 关 性 、 全性 、 安 健壮 性 、 移 植 性 、 可 中性 等 优 点 , 受 国 内外 软 件 开 发 人 员 的 欢 迎 。 深
We b应 用 的 一 般 过 程 为 : 置 好 We 设 b服 务
0 引 言
Jv a a技 术 是 由 美 国 S n公 司 倡 导 和 推 u 出 的 。 a a技 术 包括 J v Jv a a语 言 和 J v da a aMe i
A PI 、J v Ap lt a a s aa p e 、J v Ap l a i n、J v p i to c aa
RM I J v a s J P、 a a S r l t J 、 a a Be n 、 S J v e ve 、 DBC、
器 ; 发 J v pe 开 a a Ap lt或 C in piain l t Ap l t e c o 作为 客户 端程 序, 轻 服 务器 的负担 ; 减 用 J P、a aB a s J v e ve 、 J 等 构 建 在 S J v e n 、a aS r lt E B 服 务 器 端 运 行 的 服 务 程 序 ; 最 底 层 设 计 良 在 好 的 数 据 库 系 统 ; 户 以 HTTP 或 者 RM I 客
本科毕业论文-基于JAVA的聊天系统的设计与实现【范本模板】

摘要随着互联网的快速发展,网络聊天工具已经作为一种重要的信息交流工具,受到越来越多的网民的青睐.目前,出现了很多非常不错的聊天工具,其中应用比较广泛的有Netmeeting、腾讯QQ、MSN-Messager等等。
该系统开发主要包括一个网络聊天服务器程序和一个网络聊天客户程序两个方面。
前者通过Socket套接字建立服务器,服务器能读取、转发客户端发来信息,并能刷新用户列表。
后者通过与服务器建立连接,来进行客户端与客户端的信息交流。
其中用到了局域网通信机制的原理,通过直接继承Thread类来建立多线程。
开发中利用了计算机网络编程的基本理论知识,如TCP/IP协议、客户端/服务器端模式(Client/Server模式)、网络编程的设计方法等。
在网络编程中对信息的读取、发送,是利用流来实现信息的交换,其中介绍了对实现一个系统的信息流的分析,包含了一些基本的软件工程的方法。
经过分析这些情况,该局域网聊天工具采用Eclipse为基本开发环境和java 语言进行编写,首先可在短时间内建立系统应用原型,然后,对初始原型系统进行不断修正和改进,直到形成可行系统关键词:局域网聊天 socket javaAbstractAlong with the fast development of Internet,the network chating tool has already become one kind of important communication tools and received more and more web cams favor. At present, many extremely good chating tools have appeared . for example,Netmeeting, QQ,MSN—Messager and so on. This system development mainly includes two aspects of the server procedure of the network chat and the customer procedure of the network chat。
java聊天室部分主要代码

ChatClient.javaimport java.awt.*;import java.io.*;import .*;import java.applet.*;import java.util.Hashtable;public class ChatClient extends Applet implements Runnable{ Socket socket=null;DataInputStream in=null;//读取服务器端发来的消息DataOutputStream out=null;//向服务器端发送的消息InputInfo 用户名提交界面=null;UserChat 聊天界面=null;Hashtable listTable;//用于存放在线用户的用户名的散列表Label 提示条;Panel north,center;Thread thread;public void init(){setSize(1000,800);int width=getSize().width;int height=getSize().height;listTable=new Hashtable();setLayout(new BorderLayout());用户名提交界面=new InputInfo(listTable);int h=用户名提交界面.getSize().height;聊天界面=new UserChat("",listTable,width,height-(h+5));聊天界面.setVisible(false);提示条=new Label("正在连接到服务器...",Label.CENTER);提示条.setForeground(Color.red);north=new Panel(new FlowLayout(FlowLayout.LEFT));center=new Panel();north.add(用户名提交界面);north.add(提示条);center.add(聊天界面);add(north,BorderLayout.NORTH);add(center,BorderLayout.CENTER);validate();}public void start(){if(socket!=null&&in!=null&&out!=null){try{socket.close();in.close();out.close();聊天界面.setVisible(false);}catch(Exception ee){}}try{socket=new Socket(this.getCodeBase().getHost(),6666);in=new DataInputStream(socket.getInputStream());out=new DataOutputStream(socket.getOutputStream());}catch(IOException ee){提示条.setText("连接失败");}//客户端成功连接服务器端if(socket!=null){InetAddress address=socket.getInetAddress();提示条.setText("连接:"+address+"成功");用户名提交界面.setSocketConnection(socket,in,out);north.validate();}if(thread==null){thread=new Thread(this);thread.start();}}public void stop(){try{socket.close();thread=null;}catch(IOException e){this.showStatus(e.toString());}}public void run(){while(thread!=null){if(用户名提交界面.getchatornot()==true){聊天界面.setVisible(true);聊天界面.setName(用户名提交界面.getName());聊天界面.setSocketConnection(socket,in,out);提示条.setText("祝聊天快乐!");center.validate();break;}try{Thread.sleep(100);}catch(Exception e){}}}}ChatMain.javaimport .*;import java.util.*;public class ChatMain {public static void main(String args[]) {ServerSocket server=null;Socket you=null;Hashtable peopleList;peopleList=new Hashtable();while(true){try{//服务器端在端口6666处监听来自客户端的信息server=new ServerSocket(6666);}catch(IOException e1){System.out.println("正在监听");}try{//当服务器端接收到客户端的消息后,取得客户端的IP地址。
基于Java Socket的聊天室系统设计与实现

户端根据输入 Sr r I e e 的 P地址连入相应的服务器参与聊天活动, v 服务器上显示当前在线的用户信
息 , 对用户进 入或 断开 的信 息加 以显示。 并 关键词 :aa 接 字 ; Jv 套 聊天 室 ; 户端 ; 客 服务器
D I 码 : .9 9 ii n 1 0 2 7 .0 0 0 . 1 O编 1 3 6 /.s . 0 2— 2 9 2 1 .5 0 9 0 s
中图分 类号 :P 9 T 33
文献标识 码 : A
文章编号 :0 2— 2 9 2 1 )5— 0 6— 2 10 2 7 (0 0 O 0 6 0
De in & I lme to a y t m a e n J v c e sg mpe n fCh tS se B s d o a a So k t
ci t o n c dwt cm a besr r n ie h tn codn eI f e e i ut .nte l n cn et i o p t l ev dj ndcat gacri t t Po r r n t d I h e e h i ea o i goh sv p e
H ig j g L a g h n U J — i ,U M n — og n n
( u a io i l n l t m ca i l o t h i, h nsa4 0 2 ,hn ) H n nBo gc dEe r eh n a le n C a gh 1 16 C i l aa co c P yc c a
用Java Socket实现网络聊天室

务的端 口为8 端 口. e n t 2 端 口, 0 t le 为 3 f p为 2 端 口。通常.从 0 1 2 t 1 — 0 3的端
程序使用 。
L号为系统保 留.大于 1 2 『 0 3提供给应 用 F i t t e m( e rnSra nw
B f e e o tu S r a u f r d u p t t em
t ryi
首先 分析一下聊天室的基 本功能 需
求
操 作系统的通 用网络编程标准 。在 网络 编程中最常用的方案便是客户 / 务器模 服 型。奉文提 出了在客户机 /服务器 模型 下用 j v o k t a a sc e 实现 I t r e n en t巾常见 的聊天 室软件 的解 决方案 。 Sc e o k t简介
e :
户 当用 户差 闭客 户 端退 出时 . 结束
与用户的 会话 .在服务器端注 销此用 户 2.客户 端 :提 供 良好 的用户 界 面 . 便 于用 户 进 行 连接 、交 谈 当与
个 具有 S c e 接 口的计算机通信 。『 okt 盏用 程序在 网络上传输 ,接收 的信 息都通过 这个 S c e 接 口来 实现 。在应 用开发中 okt
S s e u . r a l (E r r y tm o t p it n r o : e: )
端 有无 数据 发 出, 如有 则接 收数 据 , 更新显示 。 四 、聊 天室应 用程 序类音 规 划 9
经过分析 笔者主 要确定 了如下类 :
服务器端 :
}
如睹络上最通用 的 t 1 e 、f p等 .就 en t t 如主机 接收 到此请求 .则通信 建 是基于 s c e o k t的服 务程序 ,同一 台主机 立 .服务端产 生一个 S c e o k t实例 .同 可 以提供 多种 服 务,但他 们 并不冲 突 . 此 客 户端 进 行 通 信 ,如 上 。 只因为他们的通信端 口不同,如 h t t p服 然后客户端和服务端分别打 开相 应 的输入输 出流 进行数据 传送 。
Java网络聊天室系统

lb2.setPreferredSize(new Dimension(50,30));
lb2.setBounds(100, 150, 100, 30);
panel.add(txtName);
txtName.setBounds(200, 150, 150, 30);
}catch(Exception e){e.printStackTrace();}
public RegisterFrame(LoginFrame loginFrame)
{
this.f = loginFrame;
try
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); //设置外观为系统本地外观
this.setPreferredSize(new Dimension(500,500));
this.setBounds(screenSize.width/2-250, screenSize.height/2-250, 500, 500);
this.setVisible(true);
getContentPane().add(lb1);
lb1.setFont(new Font("",Font.BOLD,30));
lb1.setBounds(200, 100, 400, 50);
getContentPane().add(panel);
panel.setLayout(null);
panel.setVisible(true);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
基于Java多线程的聊天室程序

Bu f r dR a e b = n w Bu f r - fe e e d r r e fe e
d e d rn w n u S r a R a e (e Ip t te mRe d r e lp t te mO) a e ( g tn u S r a ) s ;
中 ,首 先 定 义 一 个 S reS c e, 并 指 明 端 口号 ,这 样 服 务 器 ev ro k t
)
t i. l n s = c in s h sc i t e l t; e
3 程序 实现
31 服 务 器 端 。
建 一个 类 ,名 称 为 C atev r h r re ,代 表 服 务 器 程 序 。 在 该 类 S
p bi v i u ) u l od rn({ c ty{ r
建立 好 之 后 .每 个 客 户端 的发 言 都 发 送 给 服 务 器 ,服 务 器 接 收 后 再 转 发 给所 有 连 入 的 客户 端 ,这 样 每 个 客 户 端就 都 能 收 到 其 他 客户 发 出 的信 息 了 。这 就 是 C S结 构 聊 天 室 的工 作 原 理 ,其 / 实现 主 要使 用 如 下 两 种技 术 :
p bi S re T ra S c e s Se l n s{ u l e v r he d(o k tsHa h tci t) c e
基于websocket和java的多人聊天室

最新基于websocket与java的多人聊天室实现架构html5+websocket+javaEE7+tomcat8JavaEE7 最新的websocket1.0 APITomcat8开始支持websocket1.0 API【Tomcat implements the Java WebSocket 1.0 API defined by JSR-356】在编写代码之前你要导入javaEE7的jar包以便使用websocket API,将此项目部署到tomcat8里面。
具体代码如下:Java端:ChatAnnotation类;使用的是注解的方式。
package websocket.chat;import java.io.IOException;import java.util.Set;import java.util.concurrent.CopyOnWriteArraySet;import java.util.concurrent.atomic.AtomicInteger;import javax.websocket.OnClose;import javax.websocket.OnError;import javax.websocket.OnMessage;import javax.websocket.OnOpen;import javax.websocket.Session;import javax.websocket.server.ServerEndpoint;import org.apache.juli.logging.Log;import org.apache.juli.logging.LogFactory;import util.HTMLFilter;@ServerEndpoint(value = "/websocket/chat")public class ChatAnnotation {private static final Log log =LogFactory.getLog(ChatAnnotation.class);private static final String GUEST_PREFIX = "Guest";private static final AtomicInteger connectionIds = new AtomicInteger(0);private static final Set<ChatAnnotation> connections =new CopyOnWriteArraySet<>();private final String nickname;private Session session;public ChatAnnotation() {nickname = GUEST_PREFIX + connectionIds.getAndIncrement(); }@OnOpenpublic void start(Session session) {this.session = session;connections.add(this);String message = String.format("* %s %s", nickname, "has joined.");broadcast(message);}@OnClosepublic void end() {connections.remove(this);String message = String.format("* %s %s",nickname, "has disconnected.");broadcast(message);}@OnMessagepublic void incoming(String message) {// Never trust the clientString filteredMessage = String.format("%s: %s",nickname, HTMLFilter.filter(message.toString()));broadcast(filteredMessage);}@OnErrorpublic void onError(Throwable t) throws Throwable {log.error("Chat Error: " + t.toString(), t);}private static void broadcast(String msg) {for (ChatAnnotation client : connections) {try {synchronized (client) {client.session.getBasicRemote().sendText(msg);}} catch (IOException e) {log.debug("Chat Error: Failed to send message to client", e);connections.remove(client);try {client.session.close();} catch (IOException e1) {// Ignore}String message = String.format("* %s %s",client.nickname, "has been disconnected."); broadcast(message);}}}}里面的juli.jar包可以百度一下自行下载。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于Java的简单网络聊天室编程摘要:当前是信息网络得到飞速发展的时代,尤其是计算机和通信技术的发展和结合,深深的影响着我们的生活、学习和工作方式。
其中,网络聊天工具成为人们日常交流的一种重要工具,它成本低,通信速度快,方便信息交流和资料的传递。
本次开发的网络聊天系统是基于开放的Java应用程序设计的,系统采用客户机/服务器的架构模式,由客户端程序和服务器程序外加服务器端,用于存放客户数据的数据库组成,使用Java提供的Socket类以及Java的多线程功能,在不同的端口上部署各类服务,可以在单个程序中同时运行多个不同进程,而客户端通过Socket发送信息给服务器,从而实现多点对多点的聊天。
关键字:Java,交互性,Socket类,多线程Zhao cheng-yuAbstract:The rapid development of the information networks, especially the development and integration of computer and communication technologies, has deeply affected our lives, learning and work. Among them, the Internet chat tool becomes an important tool for daily communication, because it is low cost, fast communication and facilitat einformation exchange and data transmission. The development of the Internet chat system is designed based on open Java application. It can be dynamic, real-time information transfer and efficient interaction so that it can deal more effectively with customer requests, and is easy to maintain and update. The system will use the client / server architecture model, which includes the client program and server programs plus server-side database used to store customer data. By using the socket class provided by java and java multi-threading capability,we can deploy various services on a different port and a number of different processes can be run simultaneously in a single program. Clients send information to the server through the socket in order to achieve multi-point-to-multipoint chat.Key words: Java, interactivity, the Socket class, multi-threaded1. 引言现在互联网越来越发达,网络聊天工具成为人们日常交流的一种重要工具,它成本低,通信速度快,方便信息交流和资料的传递,所以开发一个界面友好、易于操作的聊天工具能较好地解决电话的单线程通信以及费用高昂等问题。
随着网络普及程度的提高,人们对于通信软件的要求越来越趋于简单操作,同步实时,以及更简单的网络传输。
本次开发的网络聊天系统是基于开放的Java应用程序设计的,能动态、实时地完成信息的传递,且具有高效的交互性,能更有效地处理客户请求,易于维护和更新。
系统分为两部分:客户端和服务器端。
客户端主要实现新建用户、用户登录、消息的收发功能以及群聊功能,客户端申请与服务器端建立连接,当客户端与服务器端建立连接通道后就可以像服务器端发送新建用户信息和登录信息,以及好友管理、信息编辑、发送和接收的功能;服务器端主要完成建立连接、数据库操作和监听客户三大功能,服务器端建立一个Server Socket 的连接,不断侦听客户端是否建立连接或断开连接,如果有客户端申请连接就启动线程与客户端建立连接并按照客户端的请求对数据库进行操作并把结果返回给客户端。
2.JAVA语言概况Java是一个由Sun公司开发的新一代高级编程语言。
它可在各式各样不同机器、不同操作平台的网络环境中开发软件。
不论你使用的是哪种WEB浏览器,哪种计算机,哪种操作系统,只要WEB浏览器上面注明了“支持Java”,并且装有JAVA控件,你就可以看到生动的主页。
Java正在逐步成为Internet应用中最主要的开发语言,它彻底改变了软件开发模式,带来了自PC机以来又一次革命,为飞速发展的网络世界增添了新的动力。
总而言之java 语言有简单、面向对象、分布性、安全性、多线程等特点。
3. TCP/IP3.1 TCP/IP协议的特点TCP/IP(Transmission Control Protocol/Internet Protocol)是传输控制协议/网际协议的缩写, TCP/IP是当今网络互联的核心协议。
TCP/IP协议的体系结构共有四个层次,即应用层、传输层、网络互联层和网络接口层。
IP协议的作用:第一,它是网络层的协议,提供互联网上数据传输的统一格式。
第二,提供不可靠的无连接的服务。
第三,定义了互联网上的传输数据的基本单元,提供了供路由选择的信息,没有差错校验和处理的机制。
TCP/IP协议具有以下特点:(1)协议标准具有开放性,其独立于特定的计算机硬件及操作系统,可以免费使用。
(2)统一分配网络地址,使得每个TCP/IP 设备在网络中都具有唯一的IP地址。
(3)实现了高层协议的标准化,能为用户提供多种可靠的服务。
TCP/IP协议进行传输数据传输的过程:应用程序为了传输数据会调用TCP,将数据和对应的参数传给TCP,将TCP 数据包封装在IP包内,通过网络送给目的TCP。
接收方TCP在接收到数据后通知上层应用程序,TCP 将保证接收数据的正确性。
TCP调用IP接口,向TCP提供所有TCP需要的服务。
端口号:有的时候,一个IP地址不能完整的标识一台服务器,这是应为一台物理性的计算机同时运行着多个应用程序,这就需要我们来区别同一台机子上的不同的服务,所以就在传输层和应用层上设置接口,就是端口。
端口实际是一个16位长的地址,他的范围是0~65535之间,其中0~1023是熟知端口,主要是给提供服务的应用程序使用,这些端口是所有应用进程都只道的,1024~65535为一般端口,也称动态端口、连接端口,用来随时分配要求通信的客户端应用程序。
在数据传输过程中,各种服务器不断的检测分配给他的端口,一边发现要求和他通信的客户端。
3.2 Socket介绍Socket,简称套接字,用于实现网络上客户和服务器之间的连接。
也就是说网络上两个或两个以上双工方式通信的进程之间总有一个连接,这个连接的端点成为套接字,套接字是在比较低的层次上通信的。
具体的说:一个服务器应用程序一般侦听一个特定的端口等待客户端的连接请求,当一个连接请求到达时,客户端和服武器端建立一个通信连接,在连接过程中,客户端被分配一个本地端口与一个Socket建立连接,客户端通过写Socket来通知服务器,以读Socket中的信息,类似的服务器也获得一个本地端口,它需要一个新的端口号来侦听原始端口上的其他连接请求。
服务器也通过它的本地端口连接一个socket,通过读写和客户端通信。
Socket程序的工作过程:(1)建立Socket连接:在通信开始之前由通信双方确认身份,建立一条专用的虚拟连接通道。
(2)数据通信:利用虚拟连接通道传送数据信息进行通道。
(3)关闭:通信结束时,再将所建的虚拟连接拆除。
具体如下:图1 Socket套接字原理图3.3多线程思想多个客户同时与单个服务器连接时非常常见的。
可以使用线程处理服务器上多个客户的同步问题。
while (true) {Socket socket = serverSocket.accept();Thread thread = new ThreadClass(socket);thread.start();}服务器套接字可以有多个连接。
While循环的每次迭代创建一个新的连接。
4.工程化思想分析4.1基本功能需求(1)聊天私聊:私聊就是两个之间聊天,即一对一。
群聊:就是多人一起聊天,即一对多。
(2)管理员踢人的管理(3)注册用户4.2系统设计(1)用户注册服务器收到用户的注册请求,便开始接受用户传递的信息,用户的名称,密码,接受完毕后,便通过后台数据库连接,然后向数据库添加记录。
客户收到服务器返回的信息后,便打开主登陆窗口。
(2)登陆在客户端,用户输入其用户名和密码,然后建立与服务器的连接,告诉服务器我要登录,服务器收到后,开始读取数据库,然后与用户输入的信息比较,如果成功,便打开主程序窗口。
进入相应的聊天室,看看到底有多少人在聊天室里,便可以私聊或则群聊。
(3)私聊私聊就是两个聊天。
客户端首先发送消息到服务器端,服务器端根据发送人信息和接收者信息来转发。
(4)群聊群聊,就是多人一起聊天。
过程与私聊差不多。
唯一的不同就是服务器会将信息转发给指定的一到多个成员。
(5)管理员踢人管理员踢人的功能相当于管理员看到某个人不符合规定变现,扰乱聊天次序,可以行使权限的功能拥有踢人的功能。
5. 功能模块实现5.1数据库设计public class LoginFrame extends javax.swing.JFrame implements ActionListener {private javax.swing.JButton jButtonLogin;private javax.swing.JButton jButtonRegister;private javax.swing.JLabel jLabel1;private javax.swing.JLabel jLabel2;private javax.swing.JLabel jLabel3;private javax.swing.JPasswordField jPasswordFieldPw;private javax.swing.JTextField jTextFieldName;private JPanel jPanel1;private JButton jButtonManage;public LoginFrame() {try {UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName( ));} catch (Exception e) {e.printStackTrace();}initComponents();}//初始化所有控件private void initComponents() {jPanel1 = new JPanel();jTextFieldName = new javax.swing.JTextField();jPasswordFieldPw = new javax.swing.JPasswordField();jButtonLogin = new javax.swing.JButton("登陆");jButtonRegister = new javax.swing.JButton("注册");jLabel1 = new javax.swing.JLabel();jLabel2 = new javax.swing.JLabel();jLabel3 = new javax.swing.JLabel();getContentPane().setLayout(null);getContentPane().add(jLabel1);jLabel1.setText("聊天系统");//设置label中的字体和大小,并用粗体显示jLabel1.setFont(new Font("", Font.BOLD, 30));jLabel1.setBounds(200, 100, 400, 50);getContentPane().add(jPanel1);jPanel1.setLayout(null);jPanel1.add(jLabel2);jLabel2.setText("用户名:");jLabel2.setPreferredSize(new Dimension(50, 30));jLabel2.setBounds(100, 150, 100, 30);jPanel1.add(jTextFieldName);jTextFieldName.setBounds(200, 150, 150, 30);jLabel3.setText("密码:");jLabel3.setBounds(100, 200, 100, 30);jPanel1.add(jLabel3);jPanel1.add(jPasswordFieldPw);jPasswordFieldPw.setBounds(200, 200, 150, 30);jPanel1.add(jButtonLogin);jButtonLogin.setBounds(100, 250, 80, 20);jButtonLogin.addActionListener(this);jPanel1.add(jButtonRegister);jButtonRegister.addActionListener(this);jButtonRegister.setBounds(200, 250, 80, 20);jButtonManage = new JButton("管理");jButtonManage.setBounds(300, 250, 80, 20);jButtonManage.addActionListener(this);jPanel1.add(jButtonManage);jPanel1.setBounds(0, 0, 500, 500);jPanel1.setVisible(true);setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOS E);Dimension screenSize =Toolkit.getDefaultToolkit().getScreenSize();//把窗口放在屏幕中间this.setPreferredSize(new Dimension(500, 500));this.setBounds(screenSize.width/2-250, screenSize.height/2-250, 500, 500);this.setVisible(true);setResizable(false);pack();}public static void main(String args[]) {java.awt.EventQueue.invokeLater(new Runnable() {public void run() {new LoginFrame().setVisible(true);}});}//处理按钮事件public void actionPerformed(ActionEvent e) {if (e.getActionCommand().equals("登陆")) {//如果用户按下“登陆”按钮boolean isAuthrized = DBHandler.isAuthorized(jTextFieldName.getText(), jPasswordFieldPw.getText());if (isAuthrized) {int prio = DBHandler.getPrio(jTextFieldName.getText(),jPasswordFieldPw.getText());SelRoomFrame srd = newSelRoomFrame(jTextFieldName.getText(),prio);this.dispose();} else {JOptionPane.showMessageDialog(this, "用户名密码不正确!");return;}} else if (e.getActionCommand().equals("注册")) {//如果用户按下“注册”按钮RegisterFrame rgf = new RegisterFrame(this);this.setVisible(false);} else {//如果用户按下“管理”按钮if (DBHandler.isAdmin(jTextFieldName.getText(), jPasswordFieldPw.getText())) {ManageFrame mf = new ManageFrame(this);} else {JOptionPane.showMessageDialog(this, "用户名密码不正确!");return;}}}}5.2登入选择聊天室public class LoginFrame extends javax.swing.JFrame implements ActionListener {private javax.swing.JButton jButtonLogin;private javax.swing.JButton jButtonRegister;private javax.swing.JLabel jLabel1;private javax.swing.JLabel jLabel2;private javax.swing.JLabel jLabel3;private javax.swing.JPasswordField jPasswordFieldPw;private javax.swing.JTextField jTextFieldName;private JPanel jPanel1;private JButton jButtonManage;public LoginFrame() {try {//设置显示外观为本地系统外观。