Загрузка данных
package ui;
import dao.UserDAO;
import javax.swing.*;
import java.awt.*;
public class RegisterFrame extends JFrame {
private JTextField usernameField;
private JTextField emailField;
private JPasswordField passwordField;
private JPasswordField confirmField;
private UserDAO userDAO = new UserDAO();
public RegisterFrame() {
setTitle("Регистрация");
setSize(350, 280);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setLocationRelativeTo(null);
setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.insets = new Insets(5, 5, 5, 5);
gbc.fill = GridBagConstraints.HORIZONTAL;
// Логин
gbc.gridx = 0; gbc.gridy = 0;
add(new JLabel("Логин:"), gbc);
gbc.gridx = 1;
usernameField = new JTextField(15);
add(usernameField, gbc);
// Email
gbc.gridx = 0; gbc.gridy = 1;
add(new JLabel("Email:"), gbc);
gbc.gridx = 1;
emailField = new JTextField(15);
add(emailField, gbc);
// Пароль
gbc.gridx = 0; gbc.gridy = 2;
add(new JLabel("Пароль:"), gbc);
gbc.gridx = 1;
passwordField = new JPasswordField(15);
add(passwordField, gbc);
// Подтверждение
gbc.gridx = 0; gbc.gridy = 3;
add(new JLabel("Повторите:"), gbc);
gbc.gridx = 1;
confirmField = new JPasswordField(15);
add(confirmField, gbc);
// Кнопка
gbc.gridx = 0; gbc.gridy = 4;
gbc.gridwidth = 2;
JButton registerBtn = new JButton("Зарегистрироваться");
add(registerBtn, gbc);
// Назад
gbc.gridy = 5;
JButton backBtn = new JButton("Назад");
add(backBtn, gbc);
registerBtn.addActionListener(e -> doRegister());
backBtn.addActionListener(e -> {
new LoginFrame().setVisible(true);
dispose();
});
}
private void doRegister() {
String username = usernameField.getText().trim();
String email = emailField.getText().trim();
String password = new String(passwordField.getPassword());
String confirm = new String(confirmField.getPassword());
// Валидация
if (username.isEmpty() || email.isEmpty() || password.isEmpty()) {
JOptionPane.showMessageDialog(this, "Заполните все поля!");
return;
}
if (username.length() < 3) {
JOptionPane.showMessageDialog(this, "Логин должен содержать минимум 3 символа!");
return;
}
if (!email.matches("^[\\w.-]+@[\\w.-]+\\.[a-zA-Z]{2,}$")) {
JOptionPane.showMessageDialog(this, "Некорректный email!");
return;
}
if (password.length() < 6) {
JOptionPane.showMessageDialog(this, "Пароль должен содержать минимум 6 символов!");
return;
}
if (!password.equals(confirm)) {
JOptionPane.showMessageDialog(this, "Пароли не совпадают!");
return;
}
if (userDAO.userExists(username, email)) {
JOptionPane.showMessageDialog(this, "Пользователь с таким логином или email уже существует!");
return;
}
if (userDAO.register(username, email, password)) {
JOptionPane.showMessageDialog(this, "Регистрация успешна!");
new LoginFrame().setVisible(true);
dispose();
} else {
JOptionPane.showMessageDialog(this, "Ошибка регистрации!",
"Ошибка", JOptionPane.ERROR_MESSAGE);
}
}
}