版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录1 本文简介 22 聊天室截图与说明 22.1 用Java编译: 22.2 效劳器登录界面 22.3 效劳器窗口 22.4 客服端登录界面 32.5 客服端窗口 33 效劳器端 63.1 MyServer()方法 63.2 Login()方法 103.3 Time()方法 134 客户端 144.1 MyClient()方法 144.2 Login()方法 184.3 Time()方法 20本文简介这是一个简单的Java聊天室,仅提供应一些刚学Java的学生做实验,本文也是仅供参考.本文代码都有注释,希望读者能读懂代码,本实验内部还有一些错误,比方只能一条一条的发信息,不能连发,聊天室截图与说明用Java编译:本代码有七个类,放在六个java文件中,类名在下方希望读者自己观看,效劳器登录界面要先运行效劳器端的程序用户名:y密码:1用户名密码可以自己设定点击确定可以登录,2秒后到效劳端界面效劳器窗口聊天室的IP为本机的网络虚拟IP,在任何电脑上都能用,端口应设置在1024以后,客服端登录界面和效劳器端的登录一样客服端窗口当登录上后客服端就显示已经连接了,此时效劳器端的窗口如下由于本程序设计的不是很完整,具体的聊天要先从客服端开始:在客服端输入一条聊天内容后按确定,在效劳器端就可以收到信息,之后客户端不能输入了,要等待效劳器端来信息后才能继续输入信息.想要结束聊天,直接可以关闭窗口,也可以输入’bye’后断开聊天有兴趣的朋友可以继续完善本实验程序.效劳器端MyServer()方法//效劳器端代码importjava.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.io.BufferedReader;importjava.io.InputStreamReader;importjava.io.PrintWriter;import.ServerSocket;import.Socket;importjava.text.DateFormat;importjava.util.Date;importjavax.swing.*;publicclassMyServer{//窗体实现类 protectedJLabellab10;//全体变量,做传递的一个组件Strings="已经成功连接";//初始字符串,在两个聊天窗口链接成功时输出,同时作为两个窗口传递字符的一个变量//构造方法 publicMyServer(){ try{//异常处理try JFrameframe=newJFrame("效劳器窗口");//设置窗体 frame.setLayout(null);//让布局管理器为空,使用绝对定位 Fontfnt=newFont("Serief",Font.PLAIN,40);//字体设置 Fontfnt1=newFont("Serief",Font.PLAIN,20);//字体设置 //我的用户名显示 JLabellab1=newJLabel("效劳器名:",JLabel.LEFT);//标签实例化,文本左对齐 lab1.setBounds(8,10,100,20);//设置组件位置及大小 frame.add(lab1);//添加组件 JTextFieldtext2=newJTextField(30);//单行文本输入组件 text2.setBounds(150,10,200,20);//设置组件位置及大小 text2.setEnabled(false);//文本条不可编辑 text2.setText("笑笑聊天室");//输入内容 text2.setFont(fnt1);//设置字体 frame.add(text2);//添加组件 //效劳器IP显示 JLabellab2=newJLabel("当前效劳器IP:",JLabel.LEFT);//标签实例化,文本左对齐 lab2.setBounds(8,45,100,20);//设置组件位置及大小 frame.add(lab2);//添加组件 JTextFieldtext3=newJTextField(30);//单行文本输入组件 text3.setBounds(150,45,200,20);//设置组件位置及大小 text3.setEnabled(false);//文本不可编辑 text3.setText("");//输入内容 text3.setFont(fnt1);//设置字体 frame.add(text3);//添加组件 //效劳器端口显示 JLabellab3=newJLabel("当前效劳器端口:",JLabel.LEFT);//标签实例化,文本左对齐 lab3.setBounds(8,80,100,20);//设置组件位置及大小 frame.add(lab3);//添加组件 JTextFieldtext4=newJTextField(30);//单行文本输入组件 text4.setBounds(150,80,200,20);//设置组件位置及大小 text4.setEnabled(false);//文本不可编辑 text4.setText("8888");//输入内容 text4.setFont(fnt1);//设置字体 frame.add(text4);//添加组件 //聊天记录显示 JLabellab4=newJLabel("聊天记录如下:",JLabel.LEFT);//标签实例化,文本左对齐 lab4.setBounds(8,115,100,20);//设置组件位置及大小 frame.add(lab4);//添加组件 finalJTextAreatext1=newJTextArea();//多行文本输入组件 text1.setEnabled(false);//文本不可编辑 text1.setLineWrap(true);//自动换行 JScrollPanescr=newJScrollPane(text1,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);//设置滚动条,水平和垂直滚动条始终显示 scr.setBounds(8,150,450,350);//设置组件位置及大小 frame.add(scr);//添加组件 //聊天输入窗口及确定 JLabellab5=newJLabel("请输入聊天内容:",JLabel.LEFT);//标签实例化,文本左对齐 lab5.setBounds(8,500,100,20);//设置组件位置及大小 frame.add(lab5);//添加组件 finalJTextAreatext5=newJTextArea();//多行文本输入组件 text5.setLineWrap(true);//自动换行 JScrollPanescr2=newJScrollPane(text5,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);//设置滚动条,水平和垂直滚动条始终显示 scr2.setBounds(150,500,300,50);//设置组件位置及大小 frame.add(scr2);//添加组件 finalJButtonbut=newJButton("确定");//设置确定按钮 but.setFont(fnt);//添加字体设置 but.setBounds(480,500,200,50);//设置组件位置及大小 but.addActionListener(newActionListener(){//采用内部匿名类 publicvoidactionPerformed(ActionEvente){ if(e.getSource()==but){//判断触发器源是否是提交按钮 text1.append("笑笑:"+lab10.getText()+"\n");//在聊天记录上添加文本 text1.append(text5.getText()+"\n");//将输入的聊天内容输出在聊天记录上 s=text5.getText();//得到聊天内容 text5.setText("");//将聊天窗口内容设置为空 } } }); frame.add(but);//添加组件 //当前时间显示 JLabellab7=newJLabel("时间显示:",JLabel.LEFT);//标签实例化,文本左对齐 lab7.setBounds(450,20,100,20);//设置组件位置及大小 frame.add(lab7);//添加组件 DateFormatdf=DateFormat.getDateTimeInstance();//取得系统时间 Stringdf2=df.format(newDate()); //将时间转换成字符串 JLabellab8=newJLabel(df2,JLabel.LEFT);//标签实例化,文本左对齐 lab8.setBounds(520,20,130,20);//设置组件位置及大小 frame.add(lab8);//添加组件 lab10=lab8;//传递时间显示,以便能在聊天记录上显示记录时间 newTime(lab8);//使时间动态显示 //用户列表显示 JLabellab6=newJLabel("用户列表:",JLabel.LEFT);//标签实例化,文本左对齐 lab6.setBounds(500,40,100,20);//设置组件位置及大小 frame.add(lab6);//添加组件 JTextAreatext6=newJTextArea();//标签实例化,文本左对齐 text6.setEnabled(false);//文本不可编辑 text6.setLineWrap(true);//自动换行 JScrollPanescr3=newJScrollPane(text6,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);//设置滚动条,水平和垂直滚动条始终显示 scr3.setBounds(460,70,220,420);//设置组件位置及大小 frame.add(scr3);//添加组件 //窗口的属性 frame.setSize(700,600);//窗口大小 frame.getContentPane().setBackground(Color.pink);//窗口的背景颜色 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口时关闭程序 frame.setLocation(100,50);//在电脑桌面上出现的位置 frame.setVisible(true);//显示窗口 //连个窗口连接 //建立ServerSocket并等待连接请求 ServerSocketserver=newServerSocket(8889); Socketsocket=server.accept(); //连接建立,通过Socket获取连接上的输入/输出流 BufferedReaderin=newBufferedReader(newInputStreamReader(socket.getInputStream())); finalPrintWriterout=newPrintWriter(socket.getOutputStream());//先读取Client发送的数据,然后从标准输入读取数据发送给Client当接收到bye时关闭连接 Strings1="",s2="";//标志字符串,作为传递字符串使用 while(!(s1=in.readLine()).equals("bye")){//得到其他窗口传递的字符串,并判断是否结束text6.setText("可可在线");//当连接成功是在用户列表中输出用户名字 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); //向其他窗口输出字符串} out.flush();//输出聊天内容 } //关闭连接 in.close(); out.close(); socket.close(); server.close(); }catch(Exceptione){ }} //main函数 publicstaticvoidmain(Stringargs[]){ newLogin(); //登录实现 }}Login()方法importjava.awt.event.WindowAdapter;importjava.awt.event.ActionListener;importjava.awt.event.WindowEvent;importjava.awt.event.ActionEvent;importjava.awt.Color;importjava.awt.Font;importjavax.swing.JFrame;importjavax.swing.JButton;importjavax.swing.JLabel;importjavax.swing.JTextField;importjavax.swing.JPasswordField;//用户名和密码设置classLoginCheck{//设置登录密码 privateStringname;//用户名 privateStringpassword;//密码 //构造方法 publicLoginCheck(Stringname,Stringpassword){ =name;//传递用户名 this.password=password;//传递密码 } //验证用户名和密码 publicbooleanvalidate(){//验证方法 if("y".equals(name)&&"1".equals(password)){//判断用户名和密码是否正确 returntrue;//返回true }else{ returnfalse;//返回false } }};//登录窗口classLogin{//登录类名 booleanf=false;//按登录时设置的一个标志 privateJFrameframe=newJFrame("WelcomeToMLDN");//设置窗体 privateJButtonsubmit=newJButton("登陆");//设置登录按钮 privateJButtonreset=newJButton("重置");//设置重置按钮 privateJLabelnameLab=newJLabel("效劳器:");//标签实例化 privateJLabelpassLab=newJLabel("密码:");//标签实例化 privateJLabelinfoLab=newJLabel("效劳器登陆系统");//标签实例化 privateJTextFieldnameText=newJTextField(10);//单行文本输入条 privateJPasswordFieldpassText=newJPasswordField();//单行密码文本输入条 publicLogin(){//登录窗口构造方法 Fontfnt=newFont("Serief",Font.ITALIC+Font.BOLD,12);//设置字体 infoLab.setFont(fnt); //设置标签的显示文字 submit.addActionListener(newActionListener(){//采用内部匿名类 publicvoidactionPerformed(ActionEvente){ if(e.getSource()==submit){//判断触发器源是否是提交按钮 Stringtname=nameText.getText();//得到输入的用户名 Stringtpass=newString(passText.getPassword());//得到输入的密码,此时通过getPassageword()方法返回的是字符数组 LoginChecklog=newLoginCheck(tname,tpass);//实例化LoginCheck对象,传入输入的用户名和密码 if(log.validate()){//对用户名和密码进行验证 try{//线程异常处理try Thread.sleep(2000);//2秒后翻开聊天窗口 f=true;//登录成功后的表示项为true frame.dispose();//关闭本窗口 }catch(Exceptionee){//异常获取 } }else{ infoLab.setText("登陆失败,错误的用户名或密码!");//登录失败 } } } }); reset.addActionListener(newActionListener(){//采用内部匿名类 publicvoidactionPerformed(ActionEvente){ if(e.getSource()==reset){//判断触发器源是否是提交按钮 nameText.setText("");//设置文本框中的内容 passText.setText("");//设置文本框中的内容 infoLab.setText("效劳器登陆系统");//恢复标签显示 } } }); frame.addWindowListener(newWindowAdapter(){//参加窗口监听 publicvoidwindowClosing(WindowEvente){ } }); //参加事件 frame.setLayout(null);//使用绝对定位 nameLab.setBounds(5,5,60,20);//设置标签的位置及大小 passLab.setBounds(5,30,60,20);//设置标签的位置及大小 infoLab.setBounds(5,65,220,30);//设置标签的位置及大小 nameText.setBounds(65,5,100,20);//设置文本域的位置及大小 passText.setBounds(65,30,100,20);//设置密码域的位置及大小 submit.setBounds(165,5,60,20);//设置按钮的位置及大小 reset.setBounds(165,30,60,20);//设置按钮的位置及大小 frame.add(nameLab);//向窗体参加标签 frame.add(passLab);//向窗体参加标签 frame.add(infoLab);//向窗体参加标签 frame.add(nameText);//向窗体参加文本框 frame.add(passText);//向窗体参加密码框 frame.add(submit);//向窗体参加按钮 frame.add(reset);//向窗体参加按钮 frame.setSize(280,130);//设置窗体大小 frame.getContentPane().setBackground(Color.green);//设置窗体的背景颜色 frame.setLocation(300,200);//设置窗体在电脑桌面上的位置 frame.setVisible(true);//显示窗口 while(f==false){//当登录失败时,一直循环运行, } newMyServer();//显示窗体页面 }}Time()方法importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.text.SimpleDateFormat;importjava.util.Date;importjavax.swing.JLabel;importjavax.swing.Timer;//时间类publicclassTime{ publicTime(JLabeltime){//构造方法 this.setTimer(time);//设置时间 } publicvoidsetTimer(JLabeltime){//设置时间方法finalJLabelvarTime=time;//传递组件TimertimeAction=newTimer(1000,newActionListener(){//时间监听publicvoidactionPerformed(ActionEvente){longtimemillis=System.currentTimeMillis();//得到系统时间SimpleDateFormatdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");//转换日期显示格式varTime.setText(df.format(newDate(timemillis)));//输出得到的时间}});timeAction.start();//开启线程}}客户端MyClient()方法importjava.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.io.BufferedReader;importjava.io.InputStreamReader;importjava.io.PrintWriter;import.Socket;importjava.text.DateFormat;importjava.util.Date;importjavax.swing.*;publicclassMyClient{ protectedJLabellab10;//全体变量,做传递的一个组件 Strings="连接成功";//初始字符串,在两个聊天窗口链接成功时输出,同时作为两个窗口传递字符的一个变量 //构造方法 publicMyClient(){ JFrameframe=newJFrame("用户端窗口");//设置窗体 frame.setLayout(null);//让布局管理器为空,使用绝对定位 Fontfnt=newFont("Serief",Font.PLAIN,40);//字体设置 Fontfnt1=newFont("Serief",Font.PLAIN,20);//字体设置 //我的用户名显示 JLabellab1=newJLabel("效劳器名:",JLabel.LEFT);//标签实例化,文本左对齐 lab1.setBounds(8,10,100,20);//设置组件位置及大小 frame.add(lab1);//添加组件 JTextFieldtext2=newJTextField(30);//单行文本输入组件 text2.setBounds(150,10,200,20);//设置组件位置及大小 text2.setEnabled(false);//文本条不可编辑 text2.setText("可可聊天室");//输入内容 text2.setFont(fnt1);//设置字体 frame.add(text2);//添加组件 //效劳器IP显示 JLabellab2=newJLabel("当前效劳器IP:",JLabel.LEFT);//标签实例化,文本左对齐 lab2.setBounds(8,45,100,20);//设置组件位置及大小 frame.add(lab2);//添加组件 JTextFieldtext3=newJTextField(30);//单行文本输入组件 text3.setBounds(150,45,200,20);//设置组件位置及大小 text3.setEnabled(false);//文本不可编辑 text3.setText("");//输入内容 text3.setFont(fnt1);//设置字体 frame.add(text3);//添加组件 //效劳器端口显示 JLabellab3=newJLabel("当前效劳器端口:",JLabel.LEFT);//标签实例化,文本左对齐 lab3.setBounds(8,80,100,20);//设置组件位置及大小 frame.add(lab3);//添加组件 JTextFieldtext4=newJTextField(30);//单行文本输入组件 text4.setBounds(150,80,200,20);//设置组件位置及大小 text4.setEnabled(false);//文本不可编辑 text4.setText("8888");//输入内容 text4.setFont(fnt1);//设置字体 frame.add(text4);//添加组件 //聊天记录显示 JLabellab4=newJLabel("聊天记录如下:",JLabel.LEFT);//标签实例化,文本左对齐 lab4.setBounds(8,115,100,20);//设置组件位置及大小 frame.add(lab4);//添加组件 finalJTextAreatext1=newJTextArea();//多行文本输入组件 text1.setEnabled(false);//文本不可编辑 text1.setLineWrap(true);//自动换行 JScrollPanescr=newJScrollPane(text1,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);//设置滚动条,水平和垂直滚动条始终显示 scr.setBounds(8,150,450,350);//设置组件位置及大小 frame.add(scr);//添加组件 //聊天输入窗口及确定 JLabellab5=newJLabel("请输入聊天内容:",JLabel.LEFT);//标签实例化,文本左对齐 lab5.setBounds(8,500,100,20);//设置组件位置及大小 frame.add(lab5);//添加组件 finalJTextAreatext5=newJTextArea();//多行文本输入组件 text5.setLineWrap(true);//自动换行 JScrollPanescr2=newJScrollPane(text5,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);//设置滚动条,水平和垂直滚动条始终显示 scr2.setBounds(150,500,300,50);//设置组件位置及大小 frame.add(scr2);//添加组件 finalJButtonbut=newJButton("确定");//设置确定按钮 but.setFont(fnt);//添加字体设置 but.setBounds(480,500,200,50);//设置组件位置及大小 but.addActionListener(newActionListener(){//采用内部匿名类 publicvoidactionPerformed(ActionEvente){ if(e.getSource()==but){//判断触发器源是否是提交按钮 text1.append("可可:"+lab10.getText()+"\n");//在聊天记录上添加文本 text1.append(text5.getText()+"\n");//将输入的聊天内容输出在聊天记录上 s=text5.getText(); //得到聊天内容 text5.setText("");//将聊天窗口内容设置为空 } } }); frame.add(but);//添加组件 //当前时间显示 JLabellab7=newJLabel("时间显示:",JLabel.LEFT);//标签实例化,文本左对齐 lab7.setBounds(450,20,100,20);//设置组件位置及大小 frame.add(lab7);//添加组件 DateFormatdf=DateFormat.getDateTimeInstance();//取得系统时间 Stringdf2=df.format(newDate()); //将时间转换成字符串 JLabellab8=newJLabel(df2,JLabel.LEFT);//标签实例化,文本左对齐 lab8.setBounds(520,20,130,20);//设置组件位置及大小 frame.add(lab8);//添加组件 lab10=lab8;//传递时间显示,以便能在聊天记录上显示记录时间 newTime(lab8);//使时间动态显示 //用户列表显示 JLabellab6=newJLabel("用户列表:",JLabel.LEFT);//标签实例化,文本左对齐 lab6.setBounds(500,40,100,20);//设置组件位置及大小 frame.add(lab6);//添加组件 JTextAreatext6=newJTextArea();//标签实例化,文本左对齐 text6.setEnabled(false);//文本不可编辑 text6.setLineWrap(true);//自动换行 JScrollPanescr3=newJScrollPane(text6,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);//设置滚动条,水平和垂直滚动条始终显示 scr3.setBounds(460,70,220,420);//设置组件位置及大小 frame.add(scr3);//添加组件 //窗口的属性 frame.setSize(700,600);//窗口大小 frame.getContentPane().setBackground(Color.pink);//窗口的背景颜色 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口时关闭程序 frame.setLocation(10,10);//在电脑桌面上出现的位置 frame.setVisible(true);//显示窗口 try{//try异常处理 Socketsocket=newSocket("",8889);//发出连接请求 //建立连接,通过Socket获得连接上的输入/输出流 PrintWriterout=newPrintWriter(socket.getOutputStream()); BufferedReaderin=newBufferedReader(newInputStreamReader(socket.getInputStream())); //从标准输入中读取一行,发送Server端,当用户输入bye时结束连接 do{ while(s.equals("")||s.equals(null)){//当传递的字符串为空时等待用户输入聊天内容 } if(!s.equals("")&&!s.equals(null)){//s不为空时做 out.println(s); //向其他窗口输出字符串 s=""; //将在聊天窗口中得到的字符串设为空 } out.flush();//输出聊天内容 if(!s.equals("bye")){//判断聊天是否结束Strings3;//得到其他窗口传来的字符串while((s3=in.readLine()).equals("\n")&&s3.equals(null)&&s3.equals("")){//判断s3是否为空,为空时等待}text6.setText("笑笑在线");//当连接成功是在用户列表中输出用户名字 if(!s3.equals("\n")&&!s3.equals(null)&&!s3.equals("")){//s3不为空时做 text1.append("笑笑:"+lab10.getText()+"\n");//在聊天记录上添加文本 text1.append(s3+"\n");//将输入的聊天内容输出在聊天记录上 } } }while(!s.equals("bye"));//判断是否结束 //关闭连接 out.close(); in.close(); socket.close(); }catch(Exceptione){ } } //main函数 publicstaticvoidmain(Stringargs[]){ newLogin();//登录实现 }}Login()方法importjava.awt.event.WindowAdapter;importjava.awt.event.ActionListener;importjava.awt.event.WindowEvent;importjava.awt.event.ActionEvent;importjava.awt.Color;importjava.awt.Font;importjavax.swing.JFrame;importjavax.swing.JButton;importjavax.swing.JLabel;importjavax.swing.JTextField;importjavax.swing.JPasswordField;//用户名和密码设置classLoginCheck{//设置登录密码 privateStringname;//用户名 privateStringpassword;//密码 //构造方法 publicLoginCheck(Stringname,Stringpassword){ =name;//传递用户名 this.password=password;//传递密码 } //验证用户名和密码 publicbooleanvalidate(){//验证方法 if("y".equals(name)&&"1".equals(password)){//判断用户名和密码是否正确 returntrue;//返回true }else{ returnfalse;//返回false } }};//登录窗口classLogin{//登录类名 booleanf=false;//按登录时设置的一个标志 privateJFrameframe=newJFrame("WelcomeToMLDN");//设置窗体 privateJButtonsubmit=newJButton("登陆");//设置登录按钮 privateJButtonreset=newJButton("重置");//设置重置按钮 privateJLabelnameLab=newJLabel("用户名:");//标签实例化 privateJLabelpassLab=newJLabel("密码:");//标签实例化 privateJLabelinfoLab=newJLabel("用户登陆系统");//标签实例化 privateJTextFieldnameText=newJTextField(10);//单行文本输入条 privateJPasswordFieldpassText=newJPasswordField();//单行密码文本输入条 publicLogin(){//登录窗口构造方法 Fontfnt=newFont("Serief",Font.ITALIC+Font.BOLD,12);//设置字体 infoLab.setFont(fnt); //设置标签的显示文字 submit.addActionListener(newActionListener(){//采用内部匿名类 publicvoidactionPerformed(ActionEvente){ if(e.getSource()==submit){//判断触发器源是否是提交按钮 Stringtname=nameText.getText();//得到输入的用户名 Stringtpass=newString(passText.getPassword());//得到输入的密码,此时通过getPassageword()方法返回的是字符数组 LoginChecklog=newLoginCheck(tname,tpass);//实例化LoginCheck对象,传入输入的用户名和密码 if(log.validate()){//对用户名和密码进行验证 try{ Thread.sleep(2000);//2秒后翻开聊天窗口 f=true;//登录成功后的表示项为true frame.dispose();//关闭本窗口 }catch(Exceptionee){//异常获取 } }else{ infoLab.setText("登陆失败,错误的用户名或密码!");//登录失败 } } } }); reset.addActionListener(newActionListener(){//采用内部匿名类 publicvoi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年广东省开平市高二历史上册期末考试自测卷(基础题)附答案
- 2025年江苏省启东市高二生物下册期末考试模拟考试卷含答案【模拟题】
- 2026特种气体行业供需格局与投资价值分析报告
- 2026中国风味水饮料香精技术发展与市场接受度报告
- 2026中国医药行业临床试验质量管理与效率提升报告
- 2026饮品行业KOL投放转化率与内容营销策略解码报告
- 2026中国抗癌新药伴随诊断设备市场机遇与准入壁垒分析报告
- 2026老年人健康管理市场发展态势分析及居家养老服务体系与医疗服务整合研究
- 2026中国痛风药品牌影响力与消费者认知调研报告
- 2026新型佐剂在老年疫苗中的应用价值研究报告
- 中证信用增进股份有限公司招聘笔试题库2026
- 2026年高校教师资格证考试题库附参考答案(满分必刷)
- 2026-2030年中国天文望远镜行业市场发展趋势与前景展望战略分析报告
- 2026-2027学年川教版(2024)小学信息技术四年级上册教学计划及进度表(第一学期)
- 混凝土工程中常见裂缝成因及预防措施培训
- 2026年秋苏科版(新版)初中信息技术七年级上册(全册)教学设计(附目录p100)
- 学堂在线 批判性思维-方法和实践 章节测试答案
- 毕业设计(论文)-某水库除险加固工程设计
- 苗木培育及示范林抚育投标方案(技术方案)
- 2024版《突发事件应对法》知识培训
- 1.2.2-全称量词与存在量词教学设计
评论
0/150
提交评论