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

📄 register.java

📁 java 编写聊天工具 java 编写聊天工具
💻 JAVA
字号:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
import java.util.*;
/*<p>Title:HappyChat聊天系统用户注册程序</p>
 *<p>Description:新用户通过输入相关信息注册成系统用户</p>
 *<p>Copyright:Copyright(C)2006</p>
 *<p>Filename:Register.java</p>
 *@author 刘志成
 *@version 1.0
 */

public class Register extends JFrame  implements ActionListener
{
	JPanel  pnlRegister;
	JLabel  lblUserName,lblGender,lblAge;
	JLabel  lblPassword,lblConfirmPass,lblEmail,logoPosition;
	JTextField  txtUserName,txtAge,txtEmail;
	JPasswordField  pwdUserPassword,pwdConfirmPass;
	JRadioButton  rbtnMale,rbtnFemale;
	ButtonGroup  btngGender;
    JButton  btnOk,btnCancel,btnClear;
	String  strServerIp;
    //用于将窗口用于定位
	Dimension scrnsize;
    Toolkit toolkit=Toolkit.getDefaultToolkit();
    //构造方法
	public Register(String ip)
	{
		super("[HappyChat]聊天室注册窗口");
		strServerIp=ip;
		pnlRegister=new JPanel();
		this.getContentPane().add(pnlRegister);
	
		lblUserName=new JLabel("用 户 名:");
		lblGender=new JLabel("性    别:");
		lblAge=new JLabel("年    龄:");
		lblPassword=new JLabel("口    令:");
		lblConfirmPass=new JLabel("确认口令:");
		lblEmail=new JLabel("电子邮件:");
		txtUserName=new JTextField(30);
		txtEmail=new JTextField(30);
		txtAge=new JTextField(10);
		pwdUserPassword=new JPasswordField(30);
		pwdConfirmPass=new JPasswordField(30);
		rbtnMale=new JRadioButton("男",true);
		rbtnFemale=new JRadioButton("女");
	    btngGender=new ButtonGroup();
	    btnOk=new JButton("确定(O)");
	    btnOk.setMnemonic('O');
	    btnOk.setToolTipText("保存注册信息");
		btnCancel=new JButton("返回(B)");
		btnCancel.setMnemonic('B');
		btnCancel.setToolTipText("返回登录窗口");
		btnClear=new JButton("清空(L)");
		btnClear.setMnemonic('L');
		btnClear.setToolTipText("清空注册信息");
		
		/*  该布局采用手动布局           *
		 * setBounds设置组件位置        *
		 *  setFont设置字体、字型、字号  *
		 * setForeground设置文字的颜色  *
		 *  setBackground设置背景色      *
		 *  setOpaque将背景设置为透明    */
		pnlRegister.setLayout(null);    //组件用手动布局
		pnlRegister.setBackground(new Color(52,130,203));

		lblUserName.setBounds(30,80,100,30);
		txtUserName.setBounds(110,85,120,20);
		lblPassword.setBounds(30,105,100,30);
		pwdUserPassword.setBounds(110,110,120,20);
		lblConfirmPass.setBounds(30,130,100,30);
		pwdConfirmPass.setBounds(110,135,120,20);
		lblGender.setBounds(30,155,100,30);
		rbtnMale.setBounds(110,160,60,20);
		rbtnFemale.setBounds(190,160,60,20);
		lblAge.setBounds(30,180,100,30);
		txtAge.setBounds(110,185,120,20);
		lblEmail.setBounds(30,205,100,30);
		txtEmail.setBounds(110,210,120,20);

	    btnOk.setBounds(250,135,80,25);	
	    btnCancel.setBounds(250,170,80,25);
	    btnClear.setBounds(250,210,80,25);
	
		Font fontstr=new Font("宋体",Font.PLAIN,12);	
		lblUserName.setFont(fontstr);
	    lblGender.setFont(fontstr);
		lblPassword.setFont(fontstr);
		lblConfirmPass.setFont(fontstr);
		lblAge.setFont(fontstr);
		lblEmail.setFont(fontstr);
        rbtnMale.setFont(fontstr);
		rbtnFemale.setFont(fontstr);
		txtUserName.setFont(fontstr);
		txtEmail.setFont(fontstr);	
		btnOk.setFont(fontstr);
		btnCancel.setFont(fontstr);
		btnClear.setFont(fontstr);
						
		lblUserName.setForeground(Color.BLACK);
		lblGender.setForeground(Color.BLACK);
		lblPassword.setForeground(Color.BLACK);
		lblAge.setForeground(Color.BLACK);
		lblConfirmPass .setForeground(Color.BLACK);
		lblEmail.setForeground(Color.BLACK);
		rbtnMale.setForeground(Color.BLACK);
		rbtnFemale.setForeground(Color.BLACK);
		rbtnMale.setBackground(Color.white);
		rbtnFemale.setBackground(Color.white);
		btnOk.setBackground(Color.ORANGE);	
	    btnCancel.setBackground(Color.ORANGE);
	    btnClear.setBackground(Color.ORANGE);
		rbtnMale.setOpaque(false);   
		rbtnFemale.setOpaque(false);
		
		pnlRegister.add(lblUserName);
		pnlRegister.add(lblGender);
		pnlRegister.add(lblPassword);
		pnlRegister.add(lblConfirmPass);
		pnlRegister.add(lblEmail);
		pnlRegister.add(lblAge);
		pnlRegister.add(txtAge);
		pnlRegister.add(txtUserName);
		pnlRegister.add(txtEmail);
		pnlRegister.add(pwdUserPassword);
		pnlRegister.add(pwdConfirmPass);
		pnlRegister.add(btnOk);
		pnlRegister.add(btnCancel);
		pnlRegister.add(btnClear);
		pnlRegister.add(rbtnMale);
		pnlRegister.add(rbtnFemale);
		btngGender.add(rbtnMale);
	    btngGender.add(rbtnFemale);
	    
	    //设置背景图片
	    Icon logo = new ImageIcon("images\\registerlogo.jpg");
	 	logoPosition = new JLabel(logo);
		logoPosition.setBounds(0, 0, 360,78);
		pnlRegister.add(logoPosition);
	    
	    this.setSize(360,270);
		this.setVisible(true);
		this.setResizable(false);
		//将窗口定位在屏幕中央
    	scrnsize=toolkit.getScreenSize();
    	this.setLocation(scrnsize.width/2-this.getWidth()/2,
    	                 scrnsize.height/2-this.getHeight()/2);
		Image img=toolkit.getImage("images\\appico.jpg");
        this.setIconImage(img);
		//三个按钮注册监听
		btnOk    .addActionListener(this);
		btnCancel.addActionListener(this);
		btnClear   .addActionListener(this);
	}  //构造方法结束
	
	//按钮监听响应
	public void actionPerformed(ActionEvent ae)
	{
		Object source=new Object();
	    source=ae.getSource();
	    if (source.equals(btnOk))      //"确定"按钮
	    {
	        register();
	    }
	    if (source.equals(btnCancel))  //"返回"按钮
	    {
	    	new Login();
	    	this.dispose();
	    }
	    if (source.equals(btnClear))     //"清空"按钮
	    {
	        txtUserName.setText("");
	        pwdUserPassword.setText("");
	        pwdConfirmPass.setText("");
	        txtAge.setText("");
	        txtEmail.setText("");	
	    }
	}  //actionPerformed()结束
	
	//////////"确定"按钮事件响应//////////
	public void register()
	{
		//接受客户的详细资料
        Register_Customer data=new Register_Customer();
	    data.custName     = txtUserName.getText();
		data.custPassword = pwdUserPassword.getText();
		data.age          = txtAge.getText();
		data.sex          = rbtnMale.isSelected()?"男":"女";
		data.email        = txtEmail.getText();
		//验证用户名是否为空
		if(data.custName.length()==0)
		{
		    JOptionPane.showMessageDialog(null,"用户名不能为空");	
            return;	
		}
		//验证密码是否为空
		if(data.custPassword.length()==0)
		{
		    JOptionPane.showMessageDialog(null,"密码不能为空");	
            return;	
		}
		
		//验证密码的一致性
		if(!data.custPassword.equals(pwdConfirmPass.getText()))
		{
		    JOptionPane.showMessageDialog(null,"密码两次输入不一致,请重新输入");	
            return;
		}
		
		//验证年龄是否为空
		if(data.age.length()==0)
		{
		    JOptionPane.showMessageDialog(null,"年龄不能为空");	
            return;	
		}
		//验证年龄的合法性
		int age=Integer.parseInt(txtAge.getText());
		if (age<=0||age>100){
			JOptionPane.showMessageDialog(null,"年龄输入不合法");
			return;
		}
		//验证Email的正确性
		int Found_flag=0;    //判断标志
		for (int i=0;i<data.email.length();i++)
		{
		    if(data.email.charAt(i)=='@')
		    {
		        Found_flag++;	
		    }	
		}
		if(Found_flag!=1)
		{
		    JOptionPane.showMessageDialog(null,"电子邮箱格式不正确,请重新输入");	
            return;	
		}
		
		try
		{
		    //连接到服务器
		    Socket toServer;
  		    toServer = new Socket(strServerIp,1001);
		    ObjectOutputStream streamToServer=new ObjectOutputStream (toServer.getOutputStream());					
		    //写客户详细资料到服务器socket
		    streamToServer.writeObject((Register_Customer)data);
            //读来自服务器socket的登陆状态
            BufferedReader fromServer=new BufferedReader(new InputStreamReader(toServer.getInputStream()));
            String status=fromServer.readLine();
            //显示成功消息
            JOptionPane op=new JOptionPane();
            op.showMessageDialog(null,status);
            if(status.equals(data.custName+"注册成功"))
            {
                txtUserName.setText("");
                pwdUserPassword.setText("");
                pwdConfirmPass.setText("");
                txtAge.setText("");
                txtEmail.setText("");
            }
            
            //关闭流对象
		    streamToServer.close();
            fromServer.close();
         }
		 catch(InvalidClassException e1)
		 {
		    JOptionPane.showMessageDialog(null,"类错误!");
		 }
		 catch(NotSerializableException e2)
		 {
			JOptionPane.showMessageDialog(null,"对象未序列化!");
		 }
		 catch(IOException e3)
		 {
		 	JOptionPane.showMessageDialog(null,"不能写入到指定服务器!");
		 }
		
	}  //方法register()结束
	public static void main(String args[])
	{
		new Register("127.0.0.1");
	}

}  //class Register 结束

⌨️ 快捷键说明

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