📄 registerform.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 + -