Java实现简单的QQ聊天

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Java实现QQ聊天功能一、界面的介绍1、登录界面第一次登录需要注册,该程序使用的数据库是Mysql。首先要建立test数据库,在test数据库中创建一个表jdbctest。从表中可以看出有8个字段,除id外(设置为自动分配)。2、注册界面点击立刻注册按钮,会弹出注册窗口:正确输入个人信息,提交。就会将信息写人数据库test中的jdbctest表中。注意:创建表时,各字段的容量大小。输入的字符不能超过容量,否则写人失败,会提示注册失败。3、聊天窗口用张三登录,输入密码。密码输入错误时,登录界面上提示登录失败。密码正确就会进入聊天窗口,如下:4、相同的方法,再注册一个用户,再运行一次Login.java。注册完后,用xiaozhu登录。成功登录后,这两个用户之间就可以实现聊天。一定要注意:程序运行,必须先运行ChatServer.java,只有先让服务起来之后,才能有效地运行客户端程序Login.java、ChatClient.java等程序。5、聊天用户双方各自拥有一个像这样的聊天窗口。该程序也可以实现多人聊天,只要再启动一个Login.java,也就是再注册一个用户luoxue,也会参与进来进行聊天!其中:聊天记录按钮未实现,大家自己实现吧。6、写该程序目的:主要是为了综合运用所学的知识,锻炼以下自己实战能力。程序是调出来的,也就是大家一定要细心找到程序所出错的地方。其次,我们都是站在巨人的肩上,所以有很多事不必劳心,但是该是我们所学所练大家一定不能放弃,坚持!程序有不足之处,希望各路朋友指点。二、以下是完整的代码:1、ChatServe.java:packageChat;importjava.io.DataInputStream;importjava.io.DataOutputStream;importjava.io.EOFException;importjava.io.IOException;importjava.net.*;importjava.util.*;publicclassChatServer{staticbooleanstarted=false;staticbooleanbconnected=false;staticServerSocketss=null;staticSockets=null;ArrayListClientclients=newArrayListClient();publicstaticvoidmain(String[]args){newChatServer().start();}publicvoidstart(){try{ss=newServerSocket(8888);started=true;}catch(BindExceptione){System.out.println(端口使用中.......);}catch(IOExceptione){e.printStackTrace();}try{while(started){s=ss.accept();Clientc=newClient(s);System.out.println(aclientconnect);newThread(c).start();clients.add(c);}}catch(IOExceptione){e.printStackTrace();}finally{try{ss.close();}catch(IOExceptione){e.printStackTrace();}}}classClientimplementsRunnable{privateSockets;privateDataInputStreamdis=null;privateDataOutputStreamdos=null;publicClient(Sockets){this.s=s;try{dis=newDataInputStream(s.getInputStream());dos=newDataOutputStream(s.getOutputStream());}catch(IOExceptione){e.printStackTrace();}bconnected=true;}publicvoidsend(Stringstr){try{dos.writeUTF(str);dos.flush();}catch(NullPointerExceptione){System.out.println(对方已经关闭流!);}catch(IOExceptione){clients.remove(this);System.out.println(对方退出了,我从List中删除了!);}}publicvoidrun(){try{while(bconnected){Stringstr=dis.readUTF();System.out.println(str);for(inti=0;iclients.size();i++){Clientc=clients.get(i);c.send(str);}}}catch(EOFExceptione){System.out.println(clientclosed!);}catch(IOExceptione){e.printStackTrace();}finally{try{if(s!=null)s.close();if(dis!=null)dis.close();if(dos!=null){dos.close();dos=null;}}catch(IOExceptione){e.printStackTrace();}}}}}2、Login.java:packageRegister;importjava.awt.Color;importjava.awt.Font;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.WindowAdapter;importjava.awt.event.WindowEvent;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JPasswordField;importjavax.swing.JTextField;importChat.ChatClient;publicclassLogin{booleanf=false;//按登录时设置的一个标志privateJFrameframe=newJFrame(QQ登录窗口);privateJButtonsubmit=newJButton(登陆);privateJButtonreset=newJButton(重置);privateJButtonregister=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().trim();//得到输入的用户名Stringtemppass=newString(passText.getPassword());//得到输入的密码,此时通过getPassageword()方法返回的是字符数组Stringtpass=temppass.trim();LoginChecklog=newLoginCheck(tname,tpass);//实例化LoginCheck对象,传入输入的用户名和密码if(log.validate()){//对用户名和密码进行验证try{Thread.sleep(2000);//2秒后打开聊天窗口f=true;//登录成功后的表示项为truenewChatClient(tname);System.out.println(登录成功);frame.dispose();//关闭本窗口}catch(Exceptionee){//异常获取}}else{infoLab.setText(登陆失败,错误的用户名或密码!);//登录失败}}}});register.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){if(e.getSource()==register){frame.dispose();Registerregister=newRegister();register.setSize(600,470);register.setLocationRelativeTo(null);register.setVisible(true);register.setResizable(false);}}});reset.addActionListener(newActionListener(){//采用内部匿名类publicvoidactionPerformed(ActionEvente){if(e.getSource()==reset){//判断触发器源是否是提交按钮nameText.setText();//设置文本框中的内容passText.setText();//设置文本框中的内容infoLab.setText(用户登陆系统);//恢复标签显示}}});frame.addWindowListener(newWindowAdapter(){//加入窗口监听publicvoidwindowClosing(WindowEvente){System.exit(0);}});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);register.setBounds(80,95,90,20);frame.add(nameLab);frame.add(passLab);frame.add(infoLab);frame.add(nameText);frame.add(passText);frame.add(submit);frame.add(reset);frame.add(register);frame.setSize(280,160);frame.getContentPane().setBackground(Color.pink);frame.setResizable(false);frame.setLocation(600,200);frame.set

1 / 25
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功