В Java одно из моих окон оповещений отображается дважды, а вложенное окно оповещений вообще не отображается. - PullRequest
0 голосов
/ 09 ноября 2019

Я работаю над школьным проектом, в котором я работаю с базой данных mySQL. Особая часть, над которой я сейчас работаю, это то, что происходит, когда пользователь системы пытается удалить встречу из базы данных. У меня есть три оповещения, одно работает, одно представляет дважды, а другое вообще не работает. Первый цикл, который проверяет выбор, работает. Второй, который подтверждает, что пользователь хочет удалить, запускается дважды, т. Е. Когда вы нажимаете кнопку «ОК», он отображается снова, и вы должны нажать еще раз. Затем, кажется, перейти к нижней части, где я перезагрузить страницу. Когда он перезагружает страницу, я вижу, что встреча была успешно удалена, и она также отображается как удаленная на рабочем столе mysql. Так что это только среднее предупреждение, которое, кажется, не работает вообще. Я покопался в интернете, чтобы выяснить, почему один показывает дважды, а другой совсем нет, и хотя я нашел похожие вопросы и проблемы, я попытался использовать их решения, и я не увидел никакой разницы. Я ценю любую помощь в правильном направлении, будь то исправление кода или ресурсы! Заранее большое спасибо.

// delete selected appointment
    @FXML
    void handleDelete(MouseEvent event) throws IOException, SQLException {
        Appointment ifSelected = appointmentTable.getSelectionModel().getSelectedItem();


    if (ifSelected == null){
        Alert alert = new Alert(Alert.AlertType.WARNING);
        alert.setTitle("Deletion Error");
        alert.setHeaderText("You didn't choose an appointment to delete.");
        alert.setContentText("Please click ok in order to choose an appointment for deletion.");
        alert.showAndWait();
    }

    else{
        Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
        alert.setTitle("Appointment Deletion");
        alert.setHeaderText("You are about to delete an appointment record permanantly.");
        alert.setContentText("If you want to proceed, click ok.");

        Optional<ButtonType> result = alert.showAndWait();
        if (result.isPresent() && result.get() == ButtonType.OK){
            Alert alert2 = new Alert(Alert.AlertType.INFORMATION);
            alert2.setTitle("Deletion Successful");
            alert2.setHeaderText("You successfully deleted the appointment with " + ifSelected.getCustomerName()+ " at " + ifSelected.getStartTime() + ".");
            alert.setContentText("If you want to proceed, click ok.");
            alert.show();


            Statement stmt = conn.createStatement();
            apptID = ifSelected.getAppointmentID();
            String sqlDeleteAppointment = "DELETE FROM appointment WHERE appointmentId = " + apptID;
            Query.makeQuery(sqlDeleteAppointment);


            Parent root = FXMLLoader.load(getClass().getResource("appointmentScreen.fxml"));
            scene = new Scene(root);
            stage.setScene(scene);
            stage.show();

    }
}}

'' '

1 Ответ

1 голос
/ 10 ноября 2019

Вы создали объект alert2 из класса Alert для своих вложенных предупреждений. Но вы использовали alert объект вместо alert2 .

Alert alert2 = new Alert(Alert.AlertType.INFORMATION);
alert2.setTitle("Deletion Successful");
alert2.setHeaderText("You successfully deleted the appointment with " + ifSelected.getCustomerName()+ " at " + ifSelected.getStartTime() + ".");
alert2.setContentText("If you want to proceed, click ok.");
alert2.show();
...