JavaFX2 FXML如何动态添加元素(例如Buttons)

use*_*969 5 instance building javafx-2 fxml

所以,我想要做的是,使用fxml创建一个自定义元素,然后将该元素的几个实例添加到容器中,如GridPane."new"运算符对我不起作用,因为我想使用@fxml注释器来访问该元素.克隆会很好,但它不起作用.当在for()contruct中使用添加许多元素时,FXMLLoader非常慢.如果我可以写一个fxml parentnode的引用,它可以从控制器调用,那将是完美的.

对不起...这里伪...

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);   
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

将THE按钮添加到VBox是没有问题的.但是在for-contruct中(添加多于一个按钮)它失败了.我可以在for构造中使用new运算符,但我想知道,如果这是唯一的可能性.我认为必须有另一种方式,例如使用@FXML注释器"获取"按钮然后复制它.

Yar*_*rgh 7

我相信它失败了,因为您试图一遍又一遍地添加相同的按钮。在 for 循环中,每次循环中的代码运行时,您都需要创建一个按钮实例。

就像是:

@FXML
private void Change(KeyEvent event) throws IOException {     
    for (int i=0; i<10; i++){
        stack.getChildren().add(new Button("test")) ;   
    }   
}
Run Code Online (Sandbox Code Playgroud)

如果我误解了你,请告诉我。