Кнопки входа и создания учетной записи не работают?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Кнопки входа и создания учетной записи не работают?

Сообщение Anonymous »

Я создал экран входа в систему на Java с двумя кнопками: «Войти» и «Создать учетную запись». Изначально эти кнопки работали, но после того, как я начал работать на другом экране, они внезапно перестали работать. Я знаю, что проблема не в методах входа в систему и создания учетной записи, поскольку использование клавиши ввода для входа в систему и вкладки для создания учетной записи все еще работает.
Вот мой файл login.fxml. файл: Вот мой файл LoginController.java:

Код: Выделить всё

package edu.virginia.sde.reviews;

import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.input.KeyCode;
import javafx.stage.Stage;

import java.io.IOException;
import java.sql.SQLException;

public class LoginController {
@FXML
private TextField usernameField;

@FXML
private TextField passwordField;

@FXML
private Label resultLabel;

@FXML
private Label infoLabel;

@FXML
private Label errorLabel;

private CurrentUser currentUser = CurrentUser.getInstance();
private Stage primaryStage;

public void setPrimaryStage(Stage primaryStage) {
this.primaryStage = primaryStage;
}

public void setCurrentUser(CurrentUser currentUser) {
this.currentUser = currentUser;
}

@FXML
public void handleLogin() {
errorLabel.setText("");
resultLabel.setText("Press ENTER to log in, or TAB to create an account.");
infoLabel.setText("Passwords must be at least 8 characters long.");
String username = usernameField.getText();
String password = passwordField.getText();
try {
User user = DatabaseService.authenticateUser(username, password);
if (user == null) {
errorLabel.setText("Invalid username or password.  If you don't have an account, re-enter your username and password and select \"Create Account\".");
}
else {
currentUser.setUser(user);
handleTransitionToCourseSearch();
}
} catch (SQLException e) {
errorLabel.setText("Database error; please try again.");
}
}

@FXML
public void handleKeyPress() {
usernameField.setOnKeyPressed(event -> {
if (event.getCode() == KeyCode.ENTER) {
handleLogin();
}
else if (event.getCode() == KeyCode.TAB) {
handleAccountCreation();
}
});
passwordField.setOnKeyPressed(event -> {
if (event.getCode() == KeyCode.ENTER) {
handleLogin();
}
else if (event.getCode() == KeyCode.TAB) {
handleAccountCreation();
}
});
}

@FXML
public void handleAccountCreation() {
errorLabel.setText("");
resultLabel.setText("Press ENTER to log in, or TAB to create an account.");
infoLabel.setText("Passwords must be at least 8 characters long.");
String username = usernameField.getText();
String password = passwordField.getText();
try {
if (DatabaseService.isDuplicateUsername(username)) {
errorLabel.setText("Username is already in use.");
}
else if (password.length() < 8) {
errorLabel.setText("Password must be at least 8 characters.");
}
else {
DatabaseService.createUser(username, password);
infoLabel.setText("");
resultLabel.setText("Account creation successful! Please log in.");
}
} catch (SQLException e) {
errorLabel.setText("Database error; please try again.");
}
}

@FXML
public void handleClose() {
currentUser.clearUser();
//URL: [youtube]exIQqcQ0lzI[/youtube]
//Lines 111 and 112 were taken from 3:53 of this video.
Stage stage = (Stage) resultLabel.getScene().getWindow();
stage.close();
}

public void handleTransitionToCourseSearch() {
try {
var fxmlLoader = new FXMLLoader(CourseSearchController.class.getResource("course-search.fxml"));
var newScene = new Scene(fxmlLoader.load());
var controller = (CourseSearchController) fxmlLoader.getController();
controller.setPrimaryStage(primaryStage);
controller.setCurrentUser(currentUser);
controller.updateTable();
primaryStage.setScene(newScene);
primaryStage.show();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
А вот мой файл приложения:

Код: Выделить всё

package edu.virginia.sde.reviews;

import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.stage.WindowEvent;

public class CourseReviewsApplication extends Application {
public static void main(String[] args) {
launch(args);
}

@Override
public void start(Stage stage) throws Exception {
DatabaseService.initializeDatabase();
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("login.fxml"));
Scene scene = new Scene(fxmlLoader.load());
var controller = (LoginController) fxmlLoader.getController();
controller.setPrimaryStage(stage);
stage.setTitle("Course Reviews");
stage.setScene(scene);
stage.show();
}
}
Я что-то упустил?
Я попробовал использовать операторы печати, чтобы узнать, связана ли проблема с кнопкой или логикой, и с помощью них обнаружил проблема была в самой кнопке. Я пробовал искать решения в Google, но ничего не нашел.

Подробнее здесь: https://stackoverflow.com/questions/792 ... don-t-work
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»