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