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

📄 registerform.java

📁 一个仿qq的程序源码 一个用纯java开发的
💻 JAVA
字号:
package qianqian.p2pchat.gui;

import qianqian.p2pchat.constant.Const;
import qianqian.p2pchat.control.*;
import qianqian.p2pchat.message.UserMessage;
import qianqian.p2pchat.tools.Tools;

public class RegisterForm extends javax.swing.JDialog {
	private static final long serialVersionUID = 1L;

	private static RegisterForm registForm;
	private javax.swing.JButton btOK;
	private javax.swing.JButton btNO;
	private javax.swing.JTextField tbNickname;
	private javax.swing.JTextField tbEmail;
	private javax.swing.JPasswordField tbPassword;
	private javax.swing.JPasswordField tbConfirmPwd;
	private javax.swing.JLabel lbLicence;
	private javax.swing.JLabel lbNickname;
	private javax.swing.JLabel lbPassword;
	private javax.swing.JLabel lbConfirmPwd;
	private javax.swing.JLabel lbTitle;
	private javax.swing.JLabel lbGender;
	private javax.swing.JLabel lbEmail;
	private javax.swing.JRadioButton btMale;
	private javax.swing.JRadioButton btFemale;
	private javax.swing.ButtonGroup btgGender;
	private javax.swing.JPanel btGenderPane;
	private javax.swing.JRadioButton ckAppr;
	private javax.swing.JRadioButton ckRefu;
	private javax.swing.JPanel btLicencePane;
	private javax.swing.JScrollPane licenceScrl;
	private javax.swing.JTextArea taLicence;
	private javax.swing.ButtonGroup btgLicence;
	private javax.swing.JProgressBar progressBar;
	private javax.swing.Timer timer;
	private java.awt.Color backgColor;
	private java.awt.Color borderColor;
	private javax.swing.border.MatteBorder border;
	private static int count = 0;
	private Peer peer = null;

	public synchronized static RegisterForm getInstance(javax.swing.JFrame form) {
		if (registForm == null) {
			registForm = new RegisterForm(form);
		}
		return registForm;
	}

	private RegisterForm(javax.swing.JFrame form) {
		super(form, "欢迎注册QianQian账号");
		initComponents();
		startProgress();
		addListener();
		
		setIconImage(new javax.swing.ImageIcon("icons/QianQian.gif").getImage());
		setAlwaysOnTop(true);
		setBounds(372, 150, 300, 443);
		setResizable(false);
	}

	private void initComponents() {
		btOK = new javax.swing.JButton("确\0认");
		btNO = new javax.swing.JButton("取\0消");
		tbNickname = new javax.swing.JTextField();
		tbEmail = new javax.swing.JTextField();
		tbPassword = new javax.swing.JPasswordField();
		tbConfirmPwd = new javax.swing.JPasswordField();
		lbEmail = new javax.swing.JLabel("注册邮箱:");
		lbNickname = new javax.swing.JLabel("\0\0昵\0\0称:");
		lbPassword = new javax.swing.JLabel("\0\0密\0\0码:");
		lbConfirmPwd = new javax.swing.JLabel("确认密码:");
		lbTitle = new javax.swing.JLabel(
				new javax.swing.ImageIcon("icons/title.gif"));
		lbGender = new javax.swing.JLabel("\0\0性\0\0别:");
		btMale = new javax.swing.JRadioButton("男");
		btFemale = new javax.swing.JRadioButton("女");
		btGenderPane = new javax.swing.JPanel();
		btgGender = new javax.swing.ButtonGroup();
		licenceScrl = new javax.swing.JScrollPane();
		taLicence = new javax.swing.JTextArea();
		lbLicence = new javax.swing.JLabel("同意条款:");
		ckAppr = new javax.swing.JRadioButton("我同意");
		ckRefu = new javax.swing.JRadioButton("我拒绝");
		btLicencePane = new javax.swing.JPanel();
		btgLicence = new javax.swing.ButtonGroup();
		progressBar = new javax.swing.JProgressBar();
		backgColor = new java.awt.Color(235, 245, 255);
		borderColor = new java.awt.Color(115,185,255);
		border = new javax.swing.border.MatteBorder(new java.awt.Insets(1, 1,
				1, 1), borderColor);

		java.awt.Container contentPane = getContentPane();
		contentPane.setLayout(null);
		contentPane.setBackground(backgColor);
		
		lbTitle.setBounds(-1, -1, 302, 44);
		contentPane.add(lbTitle);
		lbTitle.setBorder(border);
		
		taLicence.setForeground(new java.awt.Color(255, 100, 1));
		taLicence.setText(Const.LICENCE_TEXT);
		taLicence.setLineWrap(true);
		taLicence.setCaretPosition(0);
		taLicence.setEditable(false);
		
		licenceScrl.setViewportView(taLicence);
		contentPane.add(licenceScrl);
		licenceScrl.setBorder(border);
		licenceScrl.setBounds(5, 50, 280, 100);
		
		
		contentPane.add(lbLicence);
		lbLicence.setBounds(30, 160, 60, 25);
		
		btgLicence.add(ckAppr);
		btgLicence.add(ckRefu);
		ckAppr.setBackground(backgColor);
		ckRefu.setSelected(true);
		ckRefu.setBackground(backgColor);

		btLicencePane.setLayout(new java.awt.GridLayout(1, 2, 5, 0));
		btLicencePane.setBackground(backgColor);
		btLicencePane.add(ckRefu);
		btLicencePane.add(ckAppr);
		
		contentPane.add(btLicencePane);
		btLicencePane.setBounds(95, 160, 140, 25);
		
		contentPane.add(lbNickname);
		lbNickname.setBounds(30, 195, 60, 25);
		
		contentPane.add(tbNickname);
		tbNickname.setBorder(border);
		tbNickname.setBounds(90, 195, 140, 25);
		
		contentPane.add(lbPassword);
		lbPassword.setBounds(30, 230, 60, 25);
		
		contentPane.add(tbPassword);
		tbPassword.setBorder(border);
		tbPassword.setBounds(90, 230, 140, 25);
		
		contentPane.add(lbConfirmPwd);
		lbConfirmPwd.setBounds(30, 265, 60, 25);
		
		contentPane.add(tbConfirmPwd);
		tbConfirmPwd.setBorder(border);
		tbConfirmPwd.setBounds(90, 265, 140, 25);
		
		contentPane.add(lbEmail);
		lbEmail.setBounds(30, 300, 60, 25);
		
		contentPane.add(tbEmail);
		tbEmail.setBorder(border);
		tbEmail.setBounds(90, 300, 140, 25);
		
		contentPane.add(lbGender);
		lbGender.setBounds(30, 335, 60, 25);	

		btgGender.add(btMale);
		btgGender.add(btFemale);
		btMale.setSelected(true);
		btMale.setBackground(backgColor);
		btFemale.setBackground(backgColor);

		btGenderPane.setLayout(new java.awt.GridLayout(1, 2, 5, 0));
		btGenderPane.setBackground(backgColor);
		btGenderPane.add(btMale);
		btGenderPane.add(btFemale);
		
		contentPane.add(btGenderPane);
		btGenderPane.setBounds(100, 335, 140, 25);
		
		btOK.setBorder(border);
		contentPane.add(btOK);
		btOK.setBounds(50, 370, 75, 25);

		btNO.setBorder(border);
		contentPane.add(btNO);
		btNO.setBounds(155, 370, 75, 25);
		
		contentPane.add(progressBar);
		progressBar.setForeground(borderColor);
		progressBar.setBackground(backgColor);
		progressBar.setBorder(javax.swing.BorderFactory.createEmptyBorder());
		progressBar.setBounds(-2, 405, 302, 3);

		btMale.setBackground(backgColor);
		btFemale.setBackground(backgColor);

		pack();
	}
	
	private void resetProgress() {
		count = 0;
		progressBar.setValue(0);
		timer.stop();
	}
	
	private void startProgress() {
		int delay = 50;
		java.awt.event.ActionListener task = new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent ae) {
				if (count <= 100)
					progressBar.setValue(++count);
			}
		};
		timer = new javax.swing.Timer(delay, task);
	}
	
	private void addListener() {
		setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
		//注册
		btOK.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				new Thread(new Runnable() {
					public void run() {
						if (!timer.isRunning()) {
							btRegistPerformed();
						}
					}
				}).start();
			}
		});
		java.awt.event.KeyAdapter keyAdapter = new java.awt.event.KeyAdapter() {
			public void keyTyped(java.awt.event.KeyEvent evt) {
				if (evt.getKeyChar() == '\n') {
					new Thread(new Runnable() {
						public void run() {
							if (!timer.isRunning()) {
								btRegistPerformed();
							}
						}
					}).start();
					return;
				}
				if (evt.getSource() instanceof javax.swing.JTextField) {
					javax.swing.JTextField text = (javax.swing.JTextField) evt
							.getSource();
					if (text.getText().length() >= 16)
						text.setText(text.getText().substring(0, 15));
				}
			}
		};
		tbNickname.addKeyListener(keyAdapter);
		tbPassword.addKeyListener(keyAdapter);
		tbPassword.addKeyListener(keyAdapter);
		tbConfirmPwd.addKeyListener(keyAdapter);
		btMale.addKeyListener(keyAdapter);
		btFemale.addKeyListener(keyAdapter);
		ckAppr.addKeyListener(keyAdapter);
		ckRefu.addKeyListener(keyAdapter);
		
		//取消
		btNO.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				dispose();
			}
		});
	}
	
	private void btRegistPerformed() {
		timer.start();
		String nick = tbNickname.getText();
		String pwd1 = new String(tbPassword.getPassword());
		String pwd2 = new String(tbConfirmPwd.getPassword());
		char gender = btMale.isSelected() ? '男' : '女';
		String email = tbEmail.getText();
		if(checkRegist(nick, pwd1, pwd2, email)) {
			UserMessage msg = new UserMessage(Const.CODE_USER_REGIST, 
					new Peer(nick, Tools.MD5(pwd1), email, gender));
			Controller.getInstance().getUdpDispatcher().dispatchToServer(
					msg, Const.UdpIp);
			try {
				synchronized (Const.waitForRegistAck) {
					Const.waitForRegistAck.wait(2 * Const.WaitTimeOut);
				}
			} catch (Exception ex) {
				ex.printStackTrace();
			}
			if (peer == null) {
				resetProgress();
				javax.swing.JOptionPane.showMessageDialog(this, "连接超时,注册失败!",
						"提示", javax.swing.JOptionPane.INFORMATION_MESSAGE);
				return;
			}
			resetProgress();
			javax.swing.JOptionPane.showMessageDialog(this, 
				"注册成功:您的QianQian帐号为:" + peer.getUserId(),
				"提示", javax.swing.JOptionPane.INFORMATION_MESSAGE);
			dispose();
		}
	}
	
	private boolean checkRegist(String nick, String pwd1, 
			String pwd2, String email) {
		if(!ckAppr.isSelected()) {
			resetProgress();
			javax.swing.JOptionPane.showMessageDialog(this, "请仔细阅读以上条款,同意才能注册!",
					"提示", javax.swing.JOptionPane.INFORMATION_MESSAGE);
			return false;
		}
		if(nick.isEmpty()) {
			resetProgress();
			javax.swing.JOptionPane.showMessageDialog(this, "昵称不能为空!",
					"提示", javax.swing.JOptionPane.INFORMATION_MESSAGE);
			return false;
		} 
		if(pwd1.isEmpty()) {
			resetProgress();
			javax.swing.JOptionPane.showMessageDialog(this, "密码不能为空!",
					"提示", javax.swing.JOptionPane.INFORMATION_MESSAGE);
			return false;
		}
		if(!pwd1.equals(pwd2)) {
			resetProgress();
			javax.swing.JOptionPane.showMessageDialog(this, "密码与确认密码不一致!",
					"提示", javax.swing.JOptionPane.INFORMATION_MESSAGE);
			return false;
		}
		if(!email.matches(Const.REGEX) || email.length() > 40) {
			resetProgress();
			javax.swing.JOptionPane.showMessageDialog(this, "请输入正确注册邮箱!",
					"提示", javax.swing.JOptionPane.INFORMATION_MESSAGE);
			return false;
		}
		return true;
	}
	
	public void dispose() {
		registForm = null;
		super.dispose();
	}
	
	public void addNew(Peer newPeer) {
		peer = newPeer;
	}
}

⌨️ 快捷键说明

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