You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.3 KiB
44 lines
1.3 KiB
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();
|
|
}
|
|
}
|
|
} |