所以,我想要做的是,使用 fxml 创建一个自定义元素,然后将该元素的几个实例添加到容器中,例如 GridPane。 "new"运算符对我不起作用,因为我想使用 @fxml 注释器来访问该元素。克隆固然很好,但行不通。当在 for() 结构中使用添加许多元素时,FXMLLoader 非常慢。 如果我可以将引用写入 fxml 父节点(可以从 Controller 调用),那就完美了。
抱歉...这里是伪...
public class Controller implements Initializable {
@FXML
private VBox stack;
@FXML
private Button button;
@FXML
private void Change(KeyEvent event) throws IOException {
for (int i=0; i<10; i++){
stack.getChildren().add(button);
}
}
}
将按钮添加到 VBox 中是没有问题的。但在 for 结构(添加多个按钮)中它会失败。我可以在 for 构造中使用 new 运算符,但我想知道这是否是唯一的可能性。我想一定还有另一种方法,例如使用 @FXML 注释器“获取”按钮,然后复制它。
最佳答案
我相信它会失败,因为您试图一遍又一遍地添加相同的按钮。在 for 循环中,每次运行循环中的代码时,您都需要创建一个按钮的实例。
类似于:
@FXML
private void Change(KeyEvent event) throws IOException {
for (int i=0; i<10; i++){
stack.getChildren().add(new Button("test")) ;
}
}
如果我误解了你,请告诉我。
关于instance - JavaFX2 FXML 如何动态添加元素(例如按钮),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11722208/