Добавлен переход в режим регистрации и проверка правильности регистрационных данных

This commit is contained in:
Victor 2013-11-25 22:12:43 +02:00
parent f339579eac
commit adc60671da
2 changed files with 45 additions and 22 deletions

View File

@ -1,15 +1,15 @@
package tse.lr4; package tse.lr4;
import java.awt.Window;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import javax.swing.JButton; import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel; import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.JPasswordField; import javax.swing.JPasswordField;
import javax.swing.JTextField; import javax.swing.JTextField;
import javax.swing.SwingConstants; import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import org.netbeans.lib.awtextra.AbsoluteConstraints; import org.netbeans.lib.awtextra.AbsoluteConstraints;
import org.netbeans.lib.awtextra.AbsoluteLayout; import org.netbeans.lib.awtextra.AbsoluteLayout;
@ -25,10 +25,12 @@ public class LoginPanel extends JPanel {
private final JPasswordField passwordTextField, confirmPasswordTextField; private final JPasswordField passwordTextField, confirmPasswordTextField;
private final JButton loginButton, signupButton, cancelButton; private final JButton loginButton, signupButton, cancelButton;
private JFrame parentFrame;
private boolean state; private boolean state;
public LoginPanel() { public LoginPanel(JFrame parent) {
state = STATE_LOGIN; state = STATE_LOGIN;
parentFrame = parent;
setLayout(new AbsoluteLayout()); setLayout(new AbsoluteLayout());
@ -61,20 +63,16 @@ public class LoginPanel extends JPanel {
public void actionPerformed(ActionEvent evt) { public void actionPerformed(ActionEvent evt) {
if (state == STATE_LOGIN) { if (state == STATE_LOGIN) {
// Показываем форму регистрации // Показываем форму регистрации
loginLabel.setText("Пароль");
passwordLabel.setText("Повторите пароль");
loginTextField.setVisible(false);
confirmPasswordTextField.setVisible(true); confirmPasswordTextField.setVisible(true);
loginButton.setVisible(false); loginButton.setVisible(false);
parentFrame.setTitle("Регистрация в системе");
state = STATE_SIGNUP; state = STATE_SIGNUP;
} else { } else {
// Завершаем регистрацию и переходим в режим авторизации // Завершаем регистрацию и переходим в режим авторизации
loginLabel.setText("Логин"); if (!checkSignUpCredentials()) {
passwordLabel.setText("Пароль"); return;
loginTextField.setVisible(true); }
confirmPasswordTextField.setVisible(false); backToAuth();
loginButton.setVisible(true);
state = STATE_LOGIN;
} }
} }
}); });
@ -87,16 +85,10 @@ public class LoginPanel extends JPanel {
public void actionPerformed(ActionEvent evt) { public void actionPerformed(ActionEvent evt) {
if (state == STATE_SIGNUP) { if (state == STATE_SIGNUP) {
// Отменяем регистрацию // Отменяем регистрацию
loginLabel.setText("Логин"); backToAuth();
passwordLabel.setText("Пароль");
loginTextField.setVisible(true);
confirmPasswordTextField.setVisible(false);
loginButton.setVisible(true);
state = STATE_LOGIN;
} else { } else {
// Закрываем окно // Закрываем окно
Window window = SwingUtilities.getWindowAncestor(LoginPanel.this); parentFrame.setVisible(false);
window.setVisible(false);
} }
} }
}); });
@ -104,6 +96,37 @@ public class LoginPanel extends JPanel {
confirmPasswordTextField = new JPasswordField(); confirmPasswordTextField = new JPasswordField();
confirmPasswordTextField.setHorizontalAlignment(JTextField.CENTER); confirmPasswordTextField.setHorizontalAlignment(JTextField.CENTER);
add(confirmPasswordTextField, new AbsoluteConstraints(50, 40, 245, -1)); add(confirmPasswordTextField, new AbsoluteConstraints(50, 120, 245, -1));
confirmPasswordTextField.setVisible(false);
}
private void backToAuth() {
confirmPasswordTextField.setVisible(false);
loginButton.setVisible(true);
parentFrame.setTitle("Вход в систему");
state = STATE_LOGIN;
}
private boolean checkSignUpCredentials() {
if (loginTextField.getText().isEmpty()) {
JOptionPane.showMessageDialog(this, "Не введён логин", "Ошибка", JOptionPane.ERROR_MESSAGE);
return false;
}
String pass1 = String.valueOf( passwordTextField.getPassword() );
String pass2 = String.valueOf( confirmPasswordTextField.getPassword() );
if (!pass1.equals(pass2)) {
JOptionPane.showMessageDialog(this, "Пароли не совпадают", "Ошибка", JOptionPane.ERROR_MESSAGE);
return false;
}
if (pass1.isEmpty()) {
JOptionPane.showMessageDialog(this, "Не введён пароль", "Ошибка", JOptionPane.ERROR_MESSAGE);
return false;
}
if (pass1.length() < 4) {
JOptionPane.showMessageDialog(this, "Слишком короткий пароль", "Ошибка", JOptionPane.ERROR_MESSAGE);
return false;
}
JOptionPane.showMessageDialog(this, "Регистрация завершена");
return true;
} }
} }

View File

@ -16,7 +16,7 @@ public class LoginWindow extends JFrame {
setLocationByPlatform(true); setLocationByPlatform(true);
setDefaultCloseOperation(HIDE_ON_CLOSE); setDefaultCloseOperation(HIDE_ON_CLOSE);
LoginPanel panel = new LoginPanel(); LoginPanel panel = new LoginPanel(this);
panel.setPreferredSize(new Dimension(350, 230)); panel.setPreferredSize(new Dimension(350, 230));
add(panel); add(panel);
pack(); pack();