需要关于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 楼答案
正如在另一个答案中指出的那样,
Parent.getChildren()
是一种protected
方法。然而,它在StackPane
中被覆盖(事实上在Pane
中,所以这对所有Pane
子类都是如此),并且可见性被扩展到public
因此,由于FXML的根实际上是一个
StackPane
,所以只需更改root
的编译时类型: