Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在FXML中创建动态数量的组件_Java_Dynamic_Javafx_Fxml - Fatal编程技术网

Java 在FXML中创建动态数量的组件

Java 在FXML中创建动态数量的组件,java,dynamic,javafx,fxml,Java,Dynamic,Javafx,Fxml,我制作了一个笔记卡程序,可以帮助你学习JavaFX。它通过XML保存类,并在启动时查找XML文件并将其添加到名为NoteCardSet类型的allProjects的ArrayList中,这是一个NoteCards的ArrayList。有了这个,我制作了一个动态数量的按钮,使它们有4列宽。以下是代码: int amountPerRow = 4; int current = 0; int row = 0; for (NoteCardSet noteCardSet :

我制作了一个笔记卡程序,可以帮助你学习JavaFX。它通过XML保存类,并在启动时查找XML文件并将其添加到名为NoteCardSet类型的allProjects的ArrayList中,这是一个NoteCards的ArrayList。有了这个,我制作了一个动态数量的按钮,使它们有4列宽。以下是代码:

    int amountPerRow = 4;
    int current = 0;
    int row = 0;

    for (NoteCardSet noteCardSet : allProjects) {

        Button b = new Button(noteCardSet.getName());

        GridPane.setConstraints(b, current, row);
        centerMenu.getChildren().add(b);

        b.setOnAction(e -> {

            border.setCenter(noteCardSetLayout(noteCardSet));
        });

        if (current < amountPerRow - 1)
        {
            current++;
        }
        else if (current >= amountPerRow - 1)
        {
            current = 0;
            row++;
        }
    }
int-amountPerRow=4;
int电流=0;
int行=0;
用于(记事本集记事本集:所有项目){
按钮b=新按钮(noteCardSet.getName());
设置约束(b,当前,行);
centerMenu.getChildren().add(b);
b、 设定动作(e->{
border.setCenter(noteCardSetLayout(noteCardSet));
});
如果(电流=amountPerRow-1)
{
电流=0;
行++;
}
}

显然,这是可以在JavaFX中创建的,但是有可能在FXML中创建吗?

不,您不能在FXML中创建。无法在fxml中编写
循环
。如果只考虑一个
按钮
,则可以使用并拖放多个按钮

不过,如果您考虑的是一个更复杂的UI,并且希望重复它们,那么您可以创建一个单独的FXML,并在需要时使用它

您还可以使用循环多次加载同一个fxml,并将所有相关数据放入initialize()中,但这可能不是您正在寻找的最佳解决方案