繁体   English   中英

在 Java 中,我的一个警报框显示了两次,而嵌套的警报框根本没有显示

[英]In Java, one of my alert boxes is showing twice and the nested alert box is not showing at all

我正在从事一个学校项目,我正在使用 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();

    }
}}

'''

您已经从警报 class 为嵌套警报创建了警报 2 object。 但是您使用了alert object 而不是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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM