编程语言
首页 > 编程语言> > java – 在FXML中创建动态数量的组件

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

作者:互联网

我做了一个便条卡程序,可以帮助你学习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++;
        }
    }

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

解决方法:

不,你不能在FXML中做到这一点.无法在fxml中编写LOOP.如果只考虑一个Button,那么你可以使用SceneBuilder并拖放多个按钮.

但是,如果您考虑使用更复杂的UI并想重复它们,则可以创建单独的FXML并使用<fx:include>将其包含在您需要的时间内.

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

标签:java,javafx,fxml,dynamic
来源: https://codeday.me/bug/20191003/1849804.html