package view; import controller.NavigationController; import controller.UserController; import model.User; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class LoginView extends JFrame { private JTextField usernameField; // 新增:用户名字段 private JPasswordField passwordField; private UserController userController; public LoginView() { userController = new UserController(); initializeUI(); } private void initializeUI() { setTitle("数学学习软件 - 登录"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(400, 300); setLocationRelativeTo(null); setResizable(false); JPanel mainPanel = new JPanel(new BorderLayout(10, 10)); mainPanel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20)); // Title JLabel titleLabel = new JLabel("用户登录", JLabel.CENTER); titleLabel.setFont(new Font("微软雅黑", Font.BOLD, 24)); mainPanel.add(titleLabel, BorderLayout.NORTH); // Form panel - 修改为用户名和密码 JPanel formPanel = new JPanel(new GridLayout(3, 2, 10, 10)); JLabel usernameLabel = new JLabel("用户名:"); // 修改:改为用户名 usernameLabel.setFont(new Font("微软雅黑", Font.PLAIN, 14)); usernameField = new JTextField(); // 初始化用户名字段 JLabel passwordLabel = new JLabel("密码:"); passwordLabel.setFont(new Font("微软雅黑", Font.PLAIN, 14)); passwordField = new JPasswordField(); formPanel.add(usernameLabel); formPanel.add(usernameField); formPanel.add(passwordLabel); formPanel.add(passwordField); // Buttons JPanel buttonPanel = new JPanel(new FlowLayout()); JButton loginButton = new JButton("登录"); JButton registerButton = new JButton("注册"); loginButton.setFont(new Font("微软雅黑", Font.PLAIN, 14)); registerButton.setFont(new Font("微软雅黑", Font.PLAIN, 14)); buttonPanel.add(loginButton); buttonPanel.add(registerButton); formPanel.add(new JLabel()); // Empty cell formPanel.add(buttonPanel); mainPanel.add(formPanel, BorderLayout.CENTER); // Add action listeners loginButton.addActionListener(new LoginAction()); registerButton.addActionListener(e -> { NavigationController.showRegisterView(); }); // Enter key support usernameField.addActionListener(new LoginAction()); passwordField.addActionListener(new LoginAction()); add(mainPanel); } private class LoginAction implements ActionListener { @Override public void actionPerformed(ActionEvent e) { String username = usernameField.getText().trim(); String password = new String(passwordField.getPassword()); if (username.isEmpty() || password.isEmpty()) { JOptionPane.showMessageDialog(LoginView.this, "请输入用户名和密码", "错误", JOptionPane.ERROR_MESSAGE); return; } User user = userController.login(username, password); if (user != null) { JOptionPane.showMessageDialog(LoginView.this, "登录成功!", "成功", JOptionPane.INFORMATION_MESSAGE); // 修改:传递用户信息到主界面 NavigationController.showMainView(user); } else { JOptionPane.showMessageDialog(LoginView.this, "用户名或密码错误", "错误", JOptionPane.ERROR_MESSAGE); } } } }