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