У меня есть слушатель , присоединенный к моему полю studentIDText, который выбирает запись Student из базы данных. Однако я показываю сообщение об ошибке, если оставляю поле пустым. Однако, когда я нажимаю кнопку «Выход», я все равно получаю сообщение об ошибке, которое не исчезнет, пока я снова не извлечу запись или не введу что-то еще в поле StudentIdText.
При нажатии на кнопку «Выход» я попытался установить фокус на другое поле (в данном случае скрытое). Я также пробовал его в другом поле, например «Имя», но предупреждение не исчезло.
// StudentController.java
public class StudentController {
@FXML private TextField studentIdText;
@FXML private TextField lastNameText;
@FXML private TextField firstNameText;
//Exit the program
@FXML
public void handleExit(ActionEvent actionEvent) {
hiddenText.requestFocus();
System.exit(0);
}
@FXML
public static void showErrorMessage(String infoMessage, String titleBar, String headerMessage)
{
Alert alert = new Alert(AlertType.ERROR);
alert.setTitle(titleBar);
alert.setHeaderText(headerMessage);
alert.setContentText(infoMessage);
alert.showAndWait();
}
@FXML
private void initialize () {
// Listener to studentIdText field
studentIdText.focusedProperty().addListener((observable, wasFocused, focused) -> {
if (!focused && !studentIdText.getText().trim().isEmpty()) {
searchStudent();
}
else {
showErrorMessage("Enter valid Student ID#", "Student DB", "");
studentIdText.requestFocus();
}
});
@FXML
private void searchStudent() throws ClassNotFoundException, SQLException {
if (!studentIdText.getText().isEmpty()) {
//Get Student information
Student stu = StudentDAO.searchStudent(studentIdText.getText());
populateAndShowStudent(stu);
}
}
Сообщение об ошибке «Введите действительный идентификатор студента №» отображается все время, пока я не введу какой-либо текст в поле StudentIdText. Есть ли другой способ сделать это?