最初从 FXML 加载 Scene 时,如何在 java 代码中向 Scene 添加新节点?我已经从 FXML 加载,如下所示
Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
Scene scene = new Scene(root, 1000, 600, Color.DODGERBLUE);
现在说例如如何在 Java 代码中向场景添加按钮?
我不知道你的问题背后的原因。如果您想要在应用程序或场景初始化期间动态插入一些节点,我建议您在控制器中使用一种initialize
方法。
此方法必须带有注释@FXML
并具有以下签名:
void initialize()
然后,您可以在控制器上注入必须插入按钮的容器并将按钮添加到其中:
@FXML
HBox buttonBox // assuming your button container is a HBox
...
@FXML
protected void initialize() {
buttonBox.getChildren().add(new Button("Click me!"));
}
initialize
在构建 FXML 文件中定义的组件之后调用该方法。
这是执行此操作的一种方法:
((VBox) root).getChildren().add(new Button("Java Button"));
上面的代码片段假定 FXML 中定义的顶部容器是 VBox,如果它不是 VBox,只需将其转换为您选择的任何类型。
我想知道如何在运行时确定容器的类型,以便编写更通用的代码。
该类型可能是Pane,因此在大多数情况下转换为 Pane 都可以。对于 JavaFX 中的大多数布局任务,通常建议使用布局窗格作为父级。