⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 denglu.java

📁 在参加培训时做的一个聊天室
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
				day=(String)jc_day.getSelectedItem();//存取日变量	信息
				birth=year+"/"+month+"/"+day;//存取生日变量信息	
				if (jt_email.getText().length()!=0)
				{
					email=jt_email.getText();//存取邮箱地址
				}
				else
				{
					JOptionPane.showMessageDialog(null,"Email不能为空!","WARNING",JOptionPane.WARNING_MESSAGE);//弹出消息框
					return;
				}
				if (jt_ip.getText().length()==0)
			    {
				   JOptionPane.showMessageDialog(null,"IP地址不能为空!");//弹出消息框
				   return;
			    }  
				if (jt_question.getText().length()!=0)//判断当输入的问题不为空时的情况
				{
					question=jt_question.getText(); //存取问题
				}
				if (jt_answer.getText().length()!=0)//判断当输入的答案不为空时的情况
				{
					answer=jt_answer.getText();//存取答案
				}
				//================初始化Message类及其内的变量值
				Message m=new Message();
				m.name=name;
				m.password=password;
				m.sex=sex;
				m.birth=birth;
				m.email=email;
				m.question=question;
				m.answer=answer;
				try//处理异常
				{
					//设置文件输出流
					Socket socket=new Socket(ip,1002);//连接到服务器
					ObjectOutputStream oos=new ObjectOutputStream(socket.getOutputStream());
					oos.writeObject(m);		
					
					InputStreamReader in=new InputStreamReader(socket.getInputStream());//字节流(可做读操作)
				    BufferedReader br=new BufferedReader(in);//过滤器流
				    String str=br.readLine();
			        	
					if(str.equals("ok"))//判断当服务器发送过来的信息为"ok"时的情况
					{
					   JOptionPane.showMessageDialog(null,str);
					   new denglu();
					   dispose();
					}
					else
					{
					   JOptionPane.showMessageDialog(null,str);	
					}
				}				
			   catch (Exception e2)
			   {
				   System.out.println(e2);
			   }				
			}
			catch(Exception e)
			{
				System.out.println("Error!");
			}
		}
	    if (obj==jb2)//清除所有内容
		{
			jt_name.setText("");
			jpf.setText("");
			jpf2.setText("");
			jt_email.setText("");
			jt_question.setText("");
			jt_answer.setText("");
            jt_ip.setText("");
		}
	}//按钮事件代码结束	
//============================================主函数
	public static void main(String[] args) 
	{
		new zhuce();
	}//主函数结束
}//整个注册类结束
//=========================================================================================================
//声明一个聊天类
class liao extends JFrame implements ActionListener,Runnable
{
    JPanel jp;//容器框架变量
	JLabel jl_title,jl_name,jl_pw,jl_ip,jl_p;//静态文本变量
	JTextField jt_name,jt_time,jt_ip;//文本框变量
	JButton jb,jb2,jb3;//按钮变量
    GridBagLayout gb;//网格包变量
	GridBagConstraints gbc;//设置网格包属性变量
    Socket client;//一个套接字变量
	TextArea jta;//显示信息的文本框变量
	Thread th;//设置时间和日期
	Date date;//显示日期的变量
	GregorianCalendar calendar;//显示时间的变量
	String strDate,strTime,strStatus;//存储时间的字符串变量
	String ip;//存储IP地址的字符串变量
	//====================================构造函数
	public liao()
	{
		super("客户聊天室");
		jp=new JPanel();//初始化容器控件
		setContentPane(jp);//把容器添加到框架中去
		setDefaultCloseOperation(EXIT_ON_CLOSE);//设置应用程序的关闭
		jp.setBackground(new Color(255,255,102));//设置容器的背景颜色
		//============初始化静态文本
		jl_p=new JLabel(new ImageIcon("image/Kingsoft.gif"));
		Font font=new Font("华文新魏",Font.BOLD,18);//设置字体属性
		jl_ip=new JLabel("IP:");
		jl_ip.setFont(font);//添加字体属性
		jl_ip.setForeground(Color.black);//设置字体颜色
        jl_title=new JLabel("客户聊天室");//初始化标题
		jl_title.setFont(font);//添加字体属性
		jl_title.setForeground(Color.blue);//设置字体颜色
		jl_name=new JLabel("发送信息:");//初始化标题
		jl_name.setFont(font);//添加字体属性
		jl_name.setForeground(Color.black);//设置字体颜色
		jl_pw=new JLabel("显示:");//初始化标题
		jl_pw.setFont(font);//添加字体属性
		jl_pw.setForeground(Color.black);//设置字体颜色
		//==============初始化文本框
		jt_ip=new JTextField(20);
        jt_name=new JTextField(20);	
		jt_time=new JTextField(20);
		//==============初始化按钮
		jb=new JButton("发送");
		jb.setForeground(Color.black);//设置字体颜色
		jb.setFont(font);//添加字体属性
		jb2=new JButton("清空");
		jb2.setForeground(Color.black);//设置字体颜色
		jb2.setFont(font);//添加字体属性
		jb3=new JButton("登陆IP");
		//============实现按钮的监听
		jb.addActionListener(this);
		jb2.addActionListener(this);
		jb3.addActionListener(this);
		//=============初始化信息框
		jta=new TextArea("==欢迎进入*兔巴哥*聊天室==",10,30);
		Font font1=new Font("华文新魏",Font.BOLD,14);//设置字体属性
		jta.setEditable(false);//jta不可编辑
		jta.setForeground(Color.blue);//设置字体颜色
		jta.setFont(font1);//添加字体属性
		//============初始化网格包属性
        gb=new GridBagLayout();
		gbc=new GridBagConstraints();
		jp.setLayout(gb);//将网格包添加到容器中去
         //添加图片位置
		 gbc.fill=GridBagConstraints.BOTH;
		 gbc.anchor=GridBagConstraints.CENTER;
		 gbc.gridx=3;
		 gbc.gridy=0;
		 gb.setConstraints(jl_p,gbc);
		 jp.add(jl_p);
		//设置控件标题“客户聊天室”的位置
		 gbc.fill=GridBagConstraints.BOTH;
		 gbc.anchor=GridBagConstraints.CENTER;
		 gbc.gridx=3;
		 gbc.gridy=1;
		 gb.setConstraints(jl_title,gbc);
		 jp.add(jl_title);
		//设置控件时间框的位置
		 gbc.fill=GridBagConstraints.BOTH;
		 gbc.anchor=GridBagConstraints.NORTH;
		 gbc.gridx=3;
		 gbc.gridy=2;
		 gb.setConstraints(jt_time,gbc);
		 jp.add(jt_time);
		 jt_time.setEditable(false);//jt_time不可编辑
		 //设置控件IP的位置
		 gbc.fill=GridBagConstraints.BOTH;
		 gbc.anchor=GridBagConstraints.NORTH;
		 gbc.gridx=1;
		 gbc.gridy=3;
		 gb.setConstraints(jl_ip,gbc);
		 jp.add(jl_ip);
		 //设置控件IP的位置
		 gbc.fill=GridBagConstraints.BOTH;
		 gbc.anchor=GridBagConstraints.NORTH;
		 gbc.gridx=3;
		 gbc.gridy=3;
		 gb.setConstraints(jt_ip,gbc);
		 jp.add(jt_ip);
		 //设置控件IP的位置
		 gbc.fill=GridBagConstraints.BOTH;
		 gbc.anchor=GridBagConstraints.NORTH;
		 gbc.gridx=5;
		 gbc.gridy=3;
		 gb.setConstraints(jb3,gbc);
		 jp.add(jb3);
		//设置控件标题"显示:"的位置
		 gbc.fill=GridBagConstraints.BOTH;
		 gbc.anchor=GridBagConstraints.CENTER;
		 gbc.gridx=3;
		 gbc.gridy=8;
		 gb.setConstraints(jl_pw,gbc);
		 jp.add(jl_pw);
		//设置控件信息框的位置
		 gbc.fill=GridBagConstraints.BOTH;
		 gbc.anchor=GridBagConstraints.CENTER;
		 gbc.gridx=3;
		 gbc.gridy=10;
		 gb.setConstraints(jta,gbc);
		 jp.add(jta);
		//设置控件标题“发送信息:”的位置
		 gbc.fill=GridBagConstraints.BOTH;
		 gbc.anchor=GridBagConstraints.WEST;
		 gbc.gridx=1;
		 gbc.gridy=15;
		 gb.setConstraints(jl_name,gbc);
		 jp.add(jl_name);
		//设置控件要发送的信息框的位置
		 gbc.fill=GridBagConstraints.BOTH;
		 gbc.anchor=GridBagConstraints.WEST;
		 gbc.gridx=3;
		 gbc.gridy=15;
		 gb.setConstraints(jt_name,gbc);
		 jp.add(jt_name);
		//设置控件按钮"发送"的位置
		 gbc.fill=GridBagConstraints.BOTH;
		 gbc.anchor=GridBagConstraints.WEST;
		 gbc.gridx=5;
		 gbc.gridy=15;
		 gb.setConstraints(jb,gbc);
		 jp.add(jb);
		//设置控件按钮"清空"的位置
		 gbc.fill=GridBagConstraints.BOTH;
		 gbc.anchor=GridBagConstraints.WEST;
		 gbc.gridx=7;
		 gbc.gridy=15;
		 gb.setConstraints(jb2,gbc);
		 jp.add(jb2);
		 setSize(600,500);
		 setVisible(true);
		 
		//======初始化时间线程
		A a=new A();
		a.start();
	}//构造函数结束
//============================================================
//聊天线程
	public void run()
	{
			try
			{
				while(true)
		        {		   
			       BufferedReader receive=new  BufferedReader(new InputStreamReader(client.getInputStream()));
			       String str=receive.readLine();
			       jta.append("\n Server:"+str+"      "+strTime);
			   }
			}
			catch(Exception e)
		    {
			    System.out.println("发送信息给服务器错误");
		    }		
	}
	//=======按钮事件代码
	public void actionPerformed(ActionEvent e)
	{
      Object obj=e.getSource();
	  if(obj==jb)
	   {
		  if (jt_name.getText().length()==0)
		  {
			 JOptionPane.showMessageDialog(null,"发送信息不能为空");//弹出消息框
			 return;
		  }
		  if (jt_name.getText().length()!=0)
		  {
		     try
		     {                
				String str1=jt_name.getText();
				jta.append("\n Client:"+str1+"      "+strTime);
				PrintStream bw=new PrintStream(client.getOutputStream());
				bw.println(str1);	
		     }
			  catch(Exception ee)
			   {
				  System.out.println("发送信息给自己错误!");
			   }
		  }
	   }
		if (obj==jb2)
		{
			jt_name.setText("");
		}
		if (obj==jb3)
		{
			if (jt_ip.getText().length()!=0)
			{
				ip=jt_ip.getText();//存取地址
				//========开辟一个聊天端口
				try
				{
					  client=new Socket(ip,1001);
				}
				catch(Exception e1)
				{
					System.out.println("连接错误!");
				}
				//======初始化聊天线程
				th=new Thread(this);
				th.start();
			}
			else 
			{
				JOptionPane.showMessageDialog(null,"IP不能为空!");//弹出消息框
				return;
			}
		}
		jt_ip.setEditable(false);
		jb3.setEnabled(false);
	}//聊天线程结束
//========================================================
//设置时间线程
	class A extends Thread
	{
		public void run()
		{
		   while(true)
		   {
			  display();//调用下面的成员函数
				try
				{
					th.sleep(1000);//休眠一秒钟
				}
				catch(Exception e)
				{
				   System.out.println("时间线程错误!");
				}
		   }
			
		}
		
	}
	public void display()
	{
		Font f=new Font("Times new Roman",Font.BOLD,14);
		jt_time.setFont(f);
		jt_time.setForeground(Color.blue);
		date=new Date();
		calendar=new GregorianCalendar();
		calendar.setTime(date);
		strTime=calendar.get(Calendar.HOUR)+":"+calendar.get(Calendar.MINUTE)+":"+calendar.get(Calendar.SECOND);
		strDate=(calendar.get(Calendar.MONTH)+1)+"/"+calendar.get(Calendar.DATE)+"/"+calendar.get(Calendar.YEAR);
		strStatus=strTime+" "+strDate;
		//getAppletContext().showStatus(strStatus);
		jt_time.setText(strStatus);
	}//时间线程结束

//============================================主函数
	public static void main(String[] args) 
	{
		new liao();
	}//主函数结束
}//整个公有类结束

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -