我在 JavaFX 中进行根修改时遇到问题。
一个类加载 FXML 并创建一个场景,但我无法使用该getChildren()函数,只有getChildrenUnmodifiable().
第一个容器login.fxml是 a 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()
}
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么吗?
正如另一个答案中指出的,Parent.getChildren()是一种protected方法。但是,它在 中被重写StackPane(实际上是在 中Pane,因此对于所有子类都是如此Pane)并且可见性扩大到public。
因此,由于 FXML 的根实际上是 a 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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3987 次 |
| 最近记录: |