Java 在FXML中创建动态数量的组件
我制作了一个笔记卡程序,可以帮助你学习JavaFX。它通过XML保存类,并在启动时查找XML文件并将其添加到名为NoteCardSet类型的allProjects的ArrayList中,这是一个NoteCards的ArrayList。有了这个,我制作了一个动态数量的按钮,使它们有4列宽。以下是代码: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 :
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()中,但这可能不是您正在寻找的最佳解决方案