小编典典

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

java

我制作了一个便签程序,可以帮助您学习JavaFX。它通过XML保存该类,并在启动时查找XML文件,并将其添加到名为AllCards的NoteCardSet类型的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++;
        }
    }

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


阅读 210

收藏
2020-11-01

共1个答案

小编典典

不,您不能在FXML中执行此操作。无法LOOP在fxml中编写。如果仅考虑使用Button,则可以使用SceneBuilder并拖放多个按钮。

但是,如果考虑使用更复杂的UI并希望重复它们,则可以创建一个单独的FXML并根据需要包含它多次<fx:include>

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

2020-11-01