有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

需要关于getChildrenUnmodifiable的java解释

我在JavaFX中修改根目录时遇到问题

一个类加载一个FXML并创建一个场景,但我不能使用getChildren()函数,只有getChildrenUnmodifiable()

login.fxml中的第一个容器是StackPane,可能StackPane不支持它,就像一些控件一样

我可能误解了JavaFX的工作原理

我创建了一个测试应用程序,以查看我的项目的其他类是否导致了问题:

@Override
public void start(Stage primaryStage) throws Exception {
    Parent rootScene = FXMLLoader.load(getClass().getResource("login.fxml"));
    Scene scene = new Scene(rootScene, 900, 500);
    //rootScene.getChildrenUnmodifiable()
}

有人能解释为什么吗


共 (1) 个答案

  1. # 1 楼答案

    正如在另一个答案中指出的那样,Parent.getChildren()是一种protected方法。然而,它在StackPane中被覆盖(事实上在Pane中,所以这对所有Pane子类都是如此),并且可见性被扩展到public

    因此,由于FXML的根实际上是一个StackPane,所以只需更改root的编译时类型:

    @Override
    public void start(Stage primaryStage) throws Exception {
        StackPane rootScene = FXMLLoader.load(getClass().getResource("login.fxml"));
        rootScene.getChildren().add(...);
        Scene scene = new Scene(rootScene, 900, 500);
    }