package com.mathquiz.ui; import com.mathquiz.model.User; import javafx.geometry.Insets; import javafx.scene.control.*; import javafx.scene.layout.VBox; public class LoginPanel extends VBox { private final TextField emailField = new TextField(); private final PasswordField pwdField = new PasswordField(); public LoginPanel(MainWindow mainWindow) { setPadding(new Insets(20)); setSpacing(10); getChildren().addAll( new Label("登录"), new Label("邮箱:"), emailField, new Label("密码:"), pwdField, new Button("登录") {{ setOnAction(e -> loginAction(mainWindow)); }}, new Hyperlink("没有账号?去注册") {{ setOnAction(e -> mainWindow.showRegisterPanel()); }} ); } private void loginAction(MainWindow mainWindow) { String email = emailField.getText().trim(); String password = pwdField.getText(); User user = mainWindow.getUserService().login(email, password); if (user != null) { mainWindow.setCurrentUser(user); mainWindow.showGradeSelectPanel(); } else { new Alert(Alert.AlertType.ERROR, "邮箱或密码错误").showAndWait(); } } }