AlertType.CONFIRMATION在JavaFX中抛出IllegalArgumentException

时间:2018-03-31 00:25:14

标签: java javafx alert illegalargumentexception

每次用户尝试从ListView中删除项目时,我都会尝试添加确认类型的警报窗口。但每当我这样做时,一旦我按下按钮,就会抛出IllegalArgumentException,说明重复的孩子们。这是代码:

@FXML
private void handleDeleteCaption() {
    Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
    alert.setTitle("Delete Caption");
    alert.setHeaderText("Are you sure you want to delete this caption?");
    alert.setContentText("All its contents will be lost. Continue?");

    alert.getButtonTypes().addAll(ButtonType.YES, ButtonType.CANCEL);

    Optional<ButtonType> result = alert.showAndWait();
    if(result.isPresent() && result.get() == ButtonType.YES) {
        captionsList.getItems().remove(selectedCaption);
    }
}

当我添加警告类型警告时,问题就出现了同样的问题。它只适用于我没有指定警报的类型,即当我将其声明为AlertType.NONE时。 我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

您可能会收到此异常,因为类型CONFIRMATION中已存在按钮取消 所以你可以做到

alert.getButtonTypes().clear();

alert.getButtonTypes().addAll(ButtonType.YES, ButtonType.CANCEL);

更好的方法(如评论中提到的Slaw)是通过调用setAll而无需清除并重新添加

alert.getButtonTypes().setAll(ButtonType.YES, ButtonType.CANCEL)