Java 元素在清除后留在HBox中

Java 元素在清除后留在HBox中,java,javafx,Java,Javafx,在我的21点应用程序中,在你们输赢游戏后,它应该会删除之前游戏中的所有数据,比如HBox中的分数和卡片图像。这似乎很有效,但有时玩家牌会失效,但克劳皮尔牌会留下,他一个人玩。。 下面是代码的一部分,我在代码中删除了上次播放中所有不必要的数据: @FXML private Label playerScore; @FXML private HBox showPlayerCards; @FXML private HBox showCroupierCard

在我的21点应用程序中,在你们输赢游戏后,它应该会删除之前游戏中的所有数据,比如HBox中的分数和卡片图像。这似乎很有效,但有时玩家牌会失效,但克劳皮尔牌会留下,他一个人玩。。 下面是代码的一部分,我在代码中删除了上次播放中所有不必要的数据:

    @FXML
    private Label playerScore;
    @FXML
    private HBox showPlayerCards;
    @FXML
    private HBox showCroupierCards;


     //rest of the code

    //and method, where it's all cleared:

private void endGameAlert() {
        Alert alert = new Alert(AlertType.CONFIRMATION);
        alert.setHeaderText("Przegrałeś!");
        alert.setContentText("Co chcesz teraz zrobić?");

        ButtonType buttonNew = new ButtonType("Nowa Gra");
        ButtonType buttonEx = new ButtonType("Wyjdź");

        alert.getButtonTypes().setAll(buttonNew, buttonEx);

        Optional<ButtonType> result = alert.showAndWait();

        if (result.get() == buttonNew) {
            showPlayerCards.getChildren().clear();
            showCroupierCards.getChildren().clear();
            player.eraseScore();
            croupier.eraseScore();
            player.eraseCards();
            croupier.eraseCards();
            playerScore.setText(Integer.toString(player.getScore()));
            player.setStatus("w grze");
        } else if (result.get() == buttonEx) {
            Platform.exit();
        }
    }
@FXML
自有品牌playerScore;
@FXML
私人HBox展示卡;
@FXML
私人HBox展示卡;
//代码的其余部分
//和方法,其中所有内容都已清除:
私有void endGameAlert(){
警报警报=新警报(警报类型.确认);
alert.setHeaderText(“Przegrałeś!”);
alert.setContentText(“Co-chcesz-teraz-zrobić?”);
ButtonType buttonNew=新的ButtonType(“Nowa Gra”);
ButtonType buttonEx=新的ButtonType(“Wyjdź”);
alert.getButtonTypes().setAll(buttonNew,buttonEx);
可选结果=alert.showAndWait();
if(result.get()==buttonNew){
showPlayerCards.getChildren().clear();
showCroupierCards.getChildren().clear();
player.eraseScore();
克劳皮尔:擦掉分数();
player.eraseCards();
克劳皮尔:擦卡片();
playerScore.setText(Integer.toString(player.getScore());
玩家设置状态(“w grze”);
}else if(result.get()==buttonnex){
Platform.exit();
}
}

错误在哪里,有时无法清除HBox?

虽然
getChildren().clear()中没有错误,而且应该可以工作,为什么不重新加载FXML呢?我已经重新加载了好几次,它也被修改了,但问题仍然存在。如果它总是在游戏开始的时候,或者在某个时候,我想我可以找到bug,但是这个错误是在随机游戏中出现的……我想在这里指出的是,与其清除当前FXML控制器中的所有数据,不如在用户单击
按钮new
时重新加载它。哦,我明白了。你能给我解释一下,我该怎么做?我应该再次使用FXMLLoader吗?是的,使用
FXMLLoader
再次加载FMXL,只需更换根布局即可。由于再次加载FXML,将创建控制器的新实例,并且所有控件都将处于初始阶段。