【问题标题】:JavaFX Alert Box Not Closing on 1st ClickJavaFX 警报框未在第一次单击时关闭
【发布时间】:2025-12-13 18:15:01
【问题描述】:

我知道这可能是一个容易修复的错误,但我没有找到它。当警报框出现并单击它时,需要单击 2 次才能关闭它

private Product getProductById(int id) {
    ObservableList<Product> allProducts = Inventory.getAllProducts();
    
    for(int i = 0; i < allProducts.size(); i++) {
        Product inv = allProducts.get(i);
        
        if(inv.getId() == id) {
            return inv;
        } else {
              Alert alert = new Alert(AlertType.INFORMATION);
              alert.setTitle("Information Dialog");
              alert.setHeaderText("Item Not Found");
              alert.setContentText("The item you are searching for is not in the list!");

              alert.show();
              break;           
        }
    }
    return null;

}

【问题讨论】:

    标签: javafx alert


    【解决方案1】:

    尝试使用showAndWait 而不是show

    【讨论】:

    • 谢谢,刚刚尝试过,但它实际上是在第一个窗口关闭后加载第二个窗口。
    • @MicheleAnnRiedel 好的,这意味着整段代码运行了两次,所以问题不在于警报。尝试使用调试器逐步执行代码到调用它的位置。
    • 找到了,谢谢!这是因为我在两个区域调用 ObservableList 并且两次都列出了警报。
    • @MicheleAnnRiedel 这就是为什么您在寻求调试帮助时应该始终提供minimal reproducible example(== x-y 未按预期工作: )
    最近更新 更多