我制作了一个便签程序,可以帮助您学习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中创建吗?
不,您不能在FXML中执行此操作。无法LOOP在fxml中编写。如果仅考虑使用Button,则可以使用SceneBuilder并拖放多个按钮。
LOOP
Button
但是,如果考虑使用更复杂的UI并希望重复它们,则可以创建一个单独的FXML并根据需要包含它多次<fx:include>。
<fx:include>
您还可以使用循环多次加载相同的fxml,并将所有相关数据放入initialize()中,但这可能不是您想要的最佳解决方案。