当前位置:文档之家› Java聊天室系统程序设计实验报告

Java聊天室系统程序设计实验报告

Java聊天室系统程序设计实验报告题目:******院(系):******年级专业:******学生姓名:******指导老师:******开始时间:******完成时间:******第一部分:课程设计总述课程设计目的:1.学会Java程序开发的环境搭建与配置,并在实际运用中学习和掌握Java程序开发的全过程。

2.进一步熟悉掌握Java程序设计语言的基础内容,如用户图形界面设计、Java多线程编程、Applet程序的设计、文件和网络输入输出流编程、Java数据库编程等。

3.通过亲自动手写程序,一方面拓展知识面,一方面锻炼调试能力。

课程设计总体要求:1.问题的描述与程序将要实现的具体功能。

2.程序功能实现的具体设计思路或框架,并检查流程设计。

3.代码实现。

4.程序测试(如程序代码、功能测试、可靠性测试和效率测试等)。

5.设计小结(包括)课程设计题目:目标本软件是一个实用聊天程序。

项目要实现以下目标:1)允许用户注册;2)允许注册用户登录聊天室;3)登录用户之间进行聊天文件传输;4)用户可以更改背景音乐;用户信息的保存本软件只是一个聊天室程序,所以用户只要打开程序就可以登录。

本软件使用文本文件或者数据库来保存用户数据。

需求分析对功能的规定1.系统的用例图(对注册用户)2.用户注册过程3.用户登录过程对性能的规定由于本软件只是一个聊天室程序,程序只是提供用户之间的聊天和文件传输,故对网络传输数据要求不是很高,只要正常的传输速度就可以了。

需要管理的数据用户的信息如下:用户名,密码,头像,电子邮件,地址。

4 开发环境本软件采用Java语言编写,Java语言是一种跨平台的编程语言,所以本软件对操作系统没有特别的要求。

而网络传输方面采用TCP/IP网络传输协议或者是RMI。

总体设计思路系统主要包含两个java文件,Server.java和UserLogin.java图形界面主要通过\\org\netbeans\lib\awtextra目录下的两个类:AbsoluteConstraints.class和AbsoluteLayout.class来控制。

启动系统通过依次点击批处理文件:1.bat,2.batServer.java中包含:其中Server类又包括如下类和方法:UserLogin.java包括:其中UserLogin类又包括如下类和方法:而UserLoginWindow类又包含如下事件和方法:系统为C/S模式。

首先根据功能模块将系统分为两部分:服务端(Server)和客户端(UserLogin)。

然后构造可以序列化的User类,这是本系统的对象。

根据需求功能细分类和方法。

建立文件和网络的传输通信。

实现聊天室的基本功能具体设计代码://server.javaimport javax.swing.*;import java.awt.*;import java.awt.event.*;import .*;import java.io.*;import java.util.*;//用户信息class User implements Serializable{String UserName;String UserPassword;String UserHeadPhoto;String UserEmail;String UserAge;String SinkName;String FileName;byte FileData[];String Message;String Command;Vector vectorUserList;}public class Server extends JFrame{static Vector vectorStreamToUser=new Vector(1,1);static Vector vectorUserList=new Vector(1,1);private ServerSocket serverSocket;private JMenuItem aboutMenuItem;private JMenu commandMenu;private JMenu fileMenu;private JMenu helpMenu;private JMenuItem helpMenuItem;private JLabel jLabel1;private JLabel jLabel2;private JLabel jLabel3;private JLabel jLabel4;private JLabel jLabel5;private JList jList1;private JPanel jPanel1;private JScrollPane jScrollPane1;private JMenuItem warnMenuItem;private JMenuItem kickMenuItem;private JMenuBar menuBar;private JMenuItem msgMenuItem;private JMenuItem startMenuItem;private JMenuItem stopMenuItem;//右键事件菜单private static JPopupMenu menu;private String BlackList;//建立server框架public Server(){initComponents();}private void initComponents(){jPanel1 = new JPanel();jLabel2 = new JLabel();jLabel3 = new JLabel();jLabel4 = new JLabel();jLabel5 = new JLabel();jScrollPane1 = new JScrollPane();jList1 = new JList();jLabel1 = new JLabel();menuBar = new JMenuBar();fileMenu = new JMenu();startMenuItem = new JMenuItem();stopMenuItem = new JMenuItem();commandMenu = new JMenu();warnMenuItem = new JMenuItem();kickMenuItem = new JMenuItem();msgMenuItem = new JMenuItem();helpMenu = new JMenu();helpMenuItem = new JMenuItem();aboutMenuItem = new JMenuItem();getContentPane().setLayout(newbeans.lib.awtextra.AbsoluteLayout());setTitle("DaoDao2009服务器端");setResizable(false);//用户不能手动调整列宽度。

addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent evt) {exitForm(evt);}});jPanel1.setLayout(new beans.lib.awtextra.AbsoluteLayout()); try{//建立InetAddress对象InetAddress intel=InetAddress.getLocalHost();String SerName=intel.getHostName();String SerIp=intel.getHostAddress();jLabel2.setText(" 服务器名:"+SerName); //显示服务器端主机名jLabel3.setText("服务器IP:"+SerIp); //显示服务器端IP}catch(UnknownHostException e2){System.out.println("发生错误!");}jLabel2.setForeground(new Color(255,0,0));jLabel2.setFont(new Font("宋体", 0, 14));jPanel1.add(jLabel2, new beans.lib.awtextra.AbsoluteConstraints(20, 10, -1, -1));jLabel3.setForeground(new Color(255, 0, 0));jLabel3.setFont(new Font("宋体", 0, 14));jPanel1.add(jLabel3, new beans.lib.awtextra.AbsoluteConstraints(20, 30, -1, -1));jLabel4.setText("服务器状态:未启动");jLabel4.setForeground(new Color(255, 255, 0));jLabel4.setFont(new Font("宋体", 0, 14));jPanel1.add(jLabel4, new beans.lib.awtextra.AbsoluteConstraints(20, 240, -1, -1));jLabel5.setText("共有:0个客户在线");jLabel5.setForeground(new Color(255, 255, 51));jLabel5.setFont(new Font("宋体", 0, 14));jPanel1.add(jLabel5, new beans.lib.awtextra.AbsoluteConstraints(250, 240, -1, -1));menu = new JPopupMenu(); //右键事件菜单JMenuItem Admonition= new JMenuItem("警告");Admonition.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){int state=JOptionPane.showOptionDialog(null,"确实要警告用户"+BlackList+"吗?","确认",JOptionPane.OK_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE,null,null,null);if(state==JOptionPane.OK_OPTION){warnMenuItemActionPerformed(e);}}});JMenuItem Delete = new JMenuItem("删除");Delete.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){int state=JOptionPane.showOptionDialog(null,"确实要删除用户"+BlackList+"吗?","确认",JOptionPane.OK_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE,null,null,null);if(state==JOptionPane.OK_OPTION){kickMenuItemActionPerformed(e);}}});menu.add(Admonition);menu.add(Delete);jList1.setModel(new AbstractListModel() {String[] strings = {};public int getSize() { return strings.length; }public Object getElementAt(int i) { return strings[i]; }});jList1.setFont(new Font("Dialog",Font.BOLD | Font.ITALIC, 16));jList1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);jList1.addMouseListener(new MouseAdapter(){public void mousePressed(MouseEvent evt){if (evt.getClickCount()==1){BlackList=(String)jList1.getSelectedValue();}}public void mouseReleased(MouseEvent evt){if (evt.isPopupTrigger()){menu.show(evt.getComponent(), evt.getX(), evt.getY());}}});jScrollPane1.setViewportView(jList1);jPanel1.add(jScrollPane1, new beans.lib.awtextra.AbsoluteConstraints(20, 45, 362, 190));jLabel1.setIcon(new ImageIcon("img\\Server.jpg"));jPanel1.add(jLabel1, new beans.lib.awtextra.AbsoluteConstraints(0, -10, -1, -1));getContentPane().add(jPanel1, new beans.lib.awtextra.AbsoluteConstraints(0, 0, 400, 270));menuBar.setBorder(null);menuBar.setBackground(new Color(0, 0, 0));fileMenu.setForeground(new Color(255, 255, 255));fileMenu.setText("文件");fileMenu.setBackground(new Color(0, 0, 0));fileMenu.setFont(new Font("宋体", 0, 14));startMenuItem.setForeground(new Color(255, 255, 255));startMenuItem.setFont(new Font("宋体", 0, 14));startMenuItem.setText("启动");startMenuItem.setBackground(new Color(0, 0, 0));startMenuItem.setBorder(null);startMenuItem.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent evt) {startMenuItemActionPerformed(evt);}});fileMenu.add(startMenuItem);stopMenuItem.setForeground(new Color(255, 255, 255));stopMenuItem.setFont(new Font("宋体", 0, 14));stopMenuItem.setText("结束");stopMenuItem.setBackground(new Color(0, 0, 0));stopMenuItem.setBorder(null);stopMenuItem.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent evt) {stopMenuItemActionPerformed(evt);}});fileMenu.add(stopMenuItem);menuBar.add(fileMenu);commandMenu.setForeground(new Color(255, 255, 255));commandMenu.setText("命令");commandMenu.setBackground(new Color(0, 0, 0));commandMenu.setFont(new Font("宋体", 0, 14));msgMenuItem.setForeground(new Color(255, 255, 255));msgMenuItem.setFont(new Font("宋体", 0, 14));msgMenuItem.setText("公告");msgMenuItem.setBackground(new Color(0, 0, 0));msgMenuItem.setBorder(null);msgMenuItem.addActionListener(new ActionListener() {msgMenuItemActionPerformed(evt);}});commandMenu.add(msgMenuItem);warnMenuItem.setForeground(new Color(255, 255, 255)); warnMenuItem.setFont(new Font("宋体", 0, 14));warnMenuItem.setText("警告");warnMenuItem.setBackground(new Color(0, 0, 0));warnMenuItem.setBorder(null);warnMenuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) {warnMenuItemActionPerformed(evt);}});commandMenu.add(warnMenuItem);kickMenuItem.setForeground(new Color(255, 255, 255)); kickMenuItem.setFont(new Font("宋体", 0, 14));kickMenuItem.setText("踢人");kickMenuItem.setBackground(new Color(0, 0, 0));kickMenuItem.setBorder(null);kickMenuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) {kickMenuItemActionPerformed(evt);}});commandMenu.add(kickMenuItem);menuBar.add(commandMenu);helpMenu.setForeground(new Color(255, 255, 255));helpMenu.setText("帮助");helpMenu.setBackground(new Color(0, 0, 0));helpMenu.setFont(new Font("宋体", 0, 14));helpMenu.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent evt) {helpMenuActionPerformed(evt);}});helpMenuItem.setForeground(new Color(255, 255, 255)); helpMenuItem.setFont(new Font("宋体", 0, 14));helpMenuItem.setText("帮助主题");helpMenuItem.setBackground(new Color(0, 0, 0));helpMenuItem.setBorder(null);helpMenuItem.addActionListener(new ActionListener() {helpMenuItemActionPerformed(evt);}});helpMenu.add(helpMenuItem);aboutMenuItem.setForeground(new Color(255, 255, 255));aboutMenuItem.setFont(new Font("宋体", 0, 14));aboutMenuItem.setText("关于");aboutMenuItem.setBackground(new Color(0, 0, 0));aboutMenuItem.setBorder(null);aboutMenuItem.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent evt) {aboutMenuItemActionPerformed(evt);}});helpMenu.add(aboutMenuItem);menuBar.add(helpMenu);setJMenuBar(menuBar);pack();}public static void main(String args[]) //主函数{new Server().show();}class connection extends Thread{private User fromUserMessage=new User();private User toUserMessage=new User();private Socket netUser;private ObjectInputStream streamFromUser;private ObjectOutputStream streamToUser;private boolean existName,existPassword;private String onlineNumber="Immovability";//判断在线人数的变化public connection(Socket UserSocket){netUser=UserSocket;try{streamFromUser = new ObjectInputStream(netUser.getInputStream());streamToUser = new ObjectOutputStream(netUser.getOutputStream());}catch(IOException e){try{netUser.close();}catch(IOException e1){System.out.print("Unable to set up stream"+e1);return;}}this.start();}public boolean validateName(String name){boolean validate;String recode,message;RandomAccessFile logfile;FileInputStream fsread;InputStreamReader inputread;BufferedReader bfread;validate=false;try{fsread=new FileInputStream("User.txt");inputread=new InputStreamReader(fsread);bfread=new BufferedReader(inputread);while((recode=bfread.readLine()) != null)//验证用户信息{StringTokenizer st = new StringTokenizer(recode,":"); while (st.hasMoreTokens()){message=st.nextToken();if(message.equals(name)){validate=true;break;}break;}}}catch(FileNotFoundException e){System.out.println("The specified file does not exist"); }catch(IOException e){System.out.println("Error performing IO Operation");}return validate;}public boolean validatePassword(String password){boolean validate;String recode,message;RandomAccessFile logfile;FileInputStream fsread;InputStreamReader inputread;BufferedReader bfread;validate=false;try{fsread=new FileInputStream("User.txt");inputread=new InputStreamReader(fsread);bfread=new BufferedReader(inputread);while((recode=bfread.readLine()) != null)//验证用户信息{StringTokenizer st = new StringTokenizer(recode,":"); while (st.hasMoreTokens()){message=st.nextToken();message=st.nextToken();if(message.equals(password)){validate=true;break;}break;}}}catch(FileNotFoundException e){System.out.println("The specified file does not exist"); }catch(IOException e){System.out.println("Error performing IO Operation");}return validate;}public void run(){try{for(;;){String ButtonMessage;fromUserMessage=(User)streamFromUser.readObject();//读用户信息ButtonMessage=mand; //读按钮信息existName=validateName(erName); //验证用户名existPassword=validatePassword(erPassword);//验证用户密码if(ButtonMessage.equals("Login")){Login();}if(ButtonMessage.equals("Enter")){Enter();}if(ButtonMessage.equals("Leave")){Leave();}if(!onlineNumber.equals("Immovability")){Updating(erName);}if(ButtonMessage.equals("PublicChat") || ButtonMessage.equals("PrivateChat")){Message();}if(ButtonMessage.equals("Request") || ButtonMessage.equals("FileCopy")){toSinkMessage();}if(ButtonMessage.equals("Agree") || ButtonMessage.equals("Refuse") || ButtonMessage.equals("Succeed")){toUserMessage();}}}catch(IOException e){}catch(ClassNotFoundException e){}try{streamFromUser.close();streamToUser.close();netUser.close();}catch(IOException e){}}public void Login()//注册请求处理{try{if(existName){mand="Repeat";streamToUser.writeObject((User)toUserMessage); //返回操作信息streamToUser.flush();}else{//加入新用户信息RandomAccessFile UserObj=new RandomAccessFile("User.txt","rw");UserObj.seek(UserObj.length());UserObj.writeBytes(erName+":"+erPassword+ ":"+erHeadPhoto+":"+erEmail+":"+fromUserMesserAge+"\n");onlineNumber="add";mand="Login";erName=erName;toUserMessage.Message="系统消息:大家欢迎"+erName+"加入我们的DaoDao聊天室!!!"+"\n";Server.vectorUserList.addElement(erName);//加入用户到用户在线列表toUserMessage.vectorUserList=Server.vectorUserList;streamToUser.writeObject((User)toUserMessage);//返回用户在线列表和操作信息streamToUser.flush();Server.vectorStreamToUser.addElement(streamToUser);//存储该对象的输出流jLabel5.setText("共有:"+Server.vectorUserList.size()+"个客户在线");//服务器刷新jList1.setListData(Server.vectorUserList);}}catch(IOException e){}}public void Enter()//登陆请求处理{try{if(existName && existPassword){onlineNumber="add";mand="Enter";erName=erName;toUserMessage.Message="系统消息:大家欢迎"+erName+"加入我们的欢乐聊天室!!!"+"\n";Server.vectorUserList.addElement(erName);//加入用户到用户在线列表toUserMessage.vectorUserList=Server.vectorUserList;streamToUser.writeObject((User)toUserMessage);//返回用户在线列表和操作信息streamToUser.flush();Server.vectorStreamToUser.addElement(streamToUser);//存储该对象的输出流jLabel5.setText("共有:"+Server.vectorUserList.size()+"个客户在线");//服务器刷新jList1.setListData(Server.vectorUserList);}else{mand="Error";streamToUser.writeObject((User)toUserMessage);//返回操作信息streamToUser.flush();}}catch(IOException e){}}public void Leave()//离开请求处理{String name=erName;Server.vectorStreamToUser.removeElementAt(Server.vectorUserList.indexOf(name));Server.vectorUserList.removeElement(name);onlineNumber="lessen";Updating(name);}public void Updating(String name)//群发新用户登陆通知,更新用户在线列表和对像框{try{if(onlineNumber.equals("add")){User toUserMessage=new User();mand="add";erName=name;toUserMessage.Message="系统消息:大家欢迎"+name+"加入我们的欢乐聊天室!!!"+"\n";for(int i=1;i<Server.vectorStreamToUser.size();i++){ObjectOutputStream newUserStream;newUserStream=(ObjectOutputStream)Server.vectorStreamToUser.elementAt(i-1);newUserStream.writeObject((User)toUserMessage);newUserStream.flush();}}if(onlineNumber.equalsIgnoreCase("lessen")){User toUserMessage=new User();mand="lessen";erName=name;toUserMessage.Message="系统消息:"+name+"悄悄的走了!!!"+"\n";for(int i=0;i<Server.vectorStreamToUser.size();i++){ObjectOutputStream newUserStream;newUserStream=(ObjectOutputStream)Server.vectorStreamToUser.elementAt(i);newUserStream.writeObject((User)toUserMessage);newUserStream.flush();}}jLabel5.setText("共有:"+Server.vectorUserList.size()+"个客户在线");//服务器刷新jList1.setListData(Server.vectorUserList);onlineNumber="Immovability";}catch(IOException e){}}public void Message()//聊天信息发送{User toUserMessage=new User();try{mand="Message";toUserMessage.Message=fromUserMessage.Message;if(mand.equals("PublicChat")){for(int i=0;i<Server.vectorUserList.size();i++){if(!(erName.equals(Server.vectorUserList.elementAt(i)))){streamToUser=(ObjectOutputStream)Server.vectorStreamToUser.elementAt(i);streamToUser.writeObject((User)toUserMessage);streamToUser.flush();}}}if(mand.equals("PrivateChat")){for(int i=0;i<Server.vectorUserList.size();i++){if(erName.equals(Server.vectorUserList.elementAt(i))){streamToUser=(ObjectOutputStream)Server.vectorStreamToUser.elementAt(i);streamToUser.writeObject((User)toUserMessage);streamToUser.flush();}}}}catch(IOException e){}}//文件传输信息----------------------------------public void toSinkMessage(){try{streamToUser=(ObjectOutputStream)Server.vectorStreamToUser.elementAt(Server.v ectorUserList.indexOf(fromUserMessage.SinkName));streamToUser.writeObject(fromUserMessage);streamToUser.flush();}catch(IOException e){}}public void toUserMessage(){try{streamToUser=(ObjectOutputStream)Server.vectorStreamToUser.elementAt(Server.v ectorUserList.indexOf(erName));streamToUser.writeObject(fromUserMessage);streamToUser.flush();}catch(IOException e){}}}private void startMenuItemActionPerformed(ActionEvent evt) //启动事件{new AppServer();jLabel4.setText("服务器状态:已启动");}class AppServer extends Thread{public AppServer(){try{serverSocket = new ServerSocket(1001);//建立InetAddress对象InetAddress intel=InetAddress.getLocalHost();String SerName=intel.getHostName();String SerIp=intel.getHostAddress();System.out.println("服务器名:"+SerName);System.out.println("服务器IP:"+SerIp);}catch(IOException e){System.out.println("Could not start server"+"."+e);}System.out.println("Server start......");this.start();}public void run(){try{while(true){Socket UserSocket = serverSocket.accept();connection con = new connection(UserSocket);}}catch(IOException e){System.out.println("Not listener"+"."+e);}}}private void stopMenuItemActionPerformed(ActionEvent evt) //停止事件{jLabel4.setText("服务器状态:即将关闭");String Message="各位用户请注意,服务器5秒钟后将关闭!敬请原谅!";try{User toUserMessage=new User();mand="SystemMessage";toUserMessage.Message=Message;for(int i=0;i<Server.vectorUserList.size();i++){ObjectOutputStreamstreamToUser=(ObjectOutputStream)Server.vectorStreamToUser.elementAt(i);streamToUser.writeObject((User)toUserMessage);streamToUser.flush();}}catch(IOException e){}try{Thread.sleep(5000);}catch(InterruptedException e){}System.exit(0);}private void msgMenuItemActionPerformed(ActionEvent evt) //公告事件{try{User toUserMessage=new User();String Mesage=JOptionPane.showInputDialog(null,"请输入公告内容:","系统消息",RMATION_MESSAGE);toUserMessage.Message="系统消息:"+Mesage+"\n";mand="SystemMessage";for(int i=0;i<Server.vectorUserList.size();i++){ObjectOutputStreamstreamToUser=(ObjectOutputStream)Server.vectorStreamToUser.elementAt(i);streamToUser.writeObject((User)toUserMessage);streamToUser.flush();}}catch(IOException e){}}private void warnMenuItemActionPerformed(ActionEvent evt) //警告事件{Object obj=evt.getSource();try{if(obj==warnMenuItem){BlackList=JOptionPane.showInputDialog(null,"请输入将警告的用户名:","系统消息",RMATION_MESSAGE);}User toUserMessage=new User();toUserMessage.Message="警告:请用文明用语!否则你将被强制退出!\n";mand="SystemMessage";ObjectOutputStreamstreamToUser=(ObjectOutputStream)Server.vectorStreamToUser.elementAt(Server.vecto rUserList.indexOf(BlackList));streamToUser.writeObject((User)toUserMessage);streamToUser.flush();BlackList="";}catch(IOException e){}}private void kickMenuItemActionPerformed(ActionEvent evt) //踢人事件{Object obj=evt.getSource();try{if(obj==kickMenuItem){BlackList=JOptionPane.showInputDialog(null,"请输入将强制退出的用户名:","系统消息",RMATION_MESSAGE);}User toUserMessage=new User();for(int i=0;i<Server.vectorUserList.size();i++){if(BlackList.equals(Server.vectorUserList.elementAt(i))){mand="Kick";toUserMessage.Message="系统消息:对不起!你已被强制退出!\n";}else{erName=BlackList;mand="lessen";toUserMessage.Message="系统消息:"+BlackList+"已被强制退出!\n";}ObjectOutputStreamstreamToUser=(ObjectOutputStream)Server.vectorStreamToUser.elementAt(i);streamToUser.writeObject((User)toUserMessage);streamToUser.flush();}Server.vectorStreamToUser.removeElementAt(Server.vectorUserList.indexOf(Black List)); //服务器刷新Server.vectorUserList.removeElement(BlackList);jLabel5.setText("共有:"+Server.vectorUserList.size()+"个客户在线"); BlackList="";}catch(IOException e){}}private void aboutMenuItemActionPerformed(ActionEvent evt) //关于事件{}private void helpMenuItemActionPerformed(ActionEvent evt) //帮助事件{}private void helpMenuActionPerformed(ActionEvent evt){}private void exitForm(WindowEvent evt) //退出事件{System.exit(0);}}//UserLogin.javaimport javax.swing.*;import java.awt.*;import java.awt.event.*;import .*;import java.io.*;import java.util.*;import javax.swing.border.*;import java.applet.*;import java.applet.AudioClip;import .URL;import .MalformedURLException;import java.awt.GridBagLayout;class User implements Serializable //用户信息类{String UserName;String UserPassword;String UserHeadPhoto;String UserEmail;String UserAge;String SinkName;String FileName;byte FileData[];String Message;String Command;Vector vectorUserList;}class IllegalLengthException extends Exception //自定义异常类{}public class UserLogin extends JFrame //联接服务器窗口类{// 登陆窗口变量声明private User fromServerMessage;private User toServerMessage;private static Vector vectorUserList;private UserLoginWindow frameEnter;private Frame frameLogin;private JPanel panelObject;private JLabel Label;private JComboBox ComboBoxUserName;private JPasswordField textUserPassword;private JButton buttonLogin,buttonEnter,buttonExit;private Socket toServer;private ObjectOutputStream streamToServer;private ObjectInputStream streamFromServer;private BufferedReader fromServer;//聊天室窗口变量声明private JLabel jLabelUserName;private JButton jButtonHelp;private JButton jButtonLoginout;private JButton jButtonMusic;private JButton jButtonOption;private JButton jButtonSend;private JButton jButtonTran;private JCheckBox jCheckBox1;private JComboBox jComboBoxFace;private JComboBox jComboBoxFontsize;private JComboBox jComboBoxFontstyle;private JComboBox jComboBoxUserlist;private JLabel jLabelBackground;private JLabel jLabelWelcome;private JList jList1;private JScrollPane jScrollPane1;private JScrollPane jScrollPane2;public JTextArea jTextArea1;private JPanel jPanel1;private JTextField jTextFieldMsg;private String Face[]={"说","大声的说","开心的说","大笑着说","惊讶的说","忧郁的说","伤心的说","犹豫着说","怯怯的说","皱着眉头说","做了个鬼脸说","吐了吐舌头说","愁眉苦脸的说"};//设置服务器IP地址窗口变量声明private static UserLogin frameServerIP;private JButton jButtonNext;private JLabel jLabel1;private JPanel jPanel2;private JTextField jTextFieldIpaddress;String ServerIPaddress;public UserLogin(){initComponents();//设置窗口位置居中intlocationX=(int)(Toolkit.getDefaultToolkit().getScreenSize().getWidth()-getSize(). getWidth())/2;intlocationY=(int)(Toolkit.getDefaultToolkit().getScreenSize().getHeight()-getSize() .getHeight())/2;setLocation(locationX,locationY);}public static void main(String args[]) //主函数{JWindow mainpage=new JWindow();mainpage.setSize(400,300);JPanel content = new JPanel();content.setOpaque(false);mainpage.getContentPane().add(content);content.setLayout(null);ImageIcon background = new ImageIcon("img\\page.jpg");JLabel backlabel = new JLabel(background);content.add(backlabel, new Integer(Integer.MIN_VALUE));backlabel.setBounds(0,0,background.getIconWidth(),background.getIconHeight()); mainpage.setLocation(200,150);mainpage.setVisible(true);try{content.setOpaque(false);Thread.sleep(2000);}catch(InterruptedException e){}mainpage.setVisible(false);frameServerIP=new UserLogin();frameServerIP.setVisible(true);}private void jButtonNextActionPerformed(ActionEvent evt) //下一步按钮事件{ServerIPaddress=jTextFieldIpaddress.getText().toString();StringTokenizer str=new StringTokenizer(ServerIPaddress,".");while (str.hasMoreTokens()){String IP1=str.nextToken();String IP2=str.nextToken();String IP3=str.nextToken();String IP4=str.nextToken();int ip1=Integer.parseInt(IP1);int ip2=Integer.parseInt(IP2);int ip3=Integer.parseInt(IP3);int ip4=Integer.parseInt(IP4);if((ip1>=1&&ip1<=223)&(ip2>=0&&ip2<=255)&(ip3>=0&&ip3<=255)&(ip4>=1&&ip4<=254)) {frameServerIP.setVisible(false);frameEnter=new UserLoginWindow();frameEnter.setSize(400,320);frameEnter.setVisible(true);}else{JOptionPane.showMessageDialog(this,"您输入了非法的IP地址,请再输入一次!");jTextFieldIpaddress.setText("");}break;}}private void exitForm(java.awt.event.WindowEvent evt) //退出按钮事件{System.exit(0);}class UserLoginWindow extends JFrame implements Runnable //登录窗口。

相关主题