这是我的代码。这提示异常说" IllegalArgumentException:Children:重复的子项添加:parent = Grid hgap = 5.0,vgap = 5.0,alignment = TOP_LEFT"
文件文件=新文件(" D:\ SERVER \ Server Content \ Apps \ icons");
File[] filelist1 = file.listFiles();
ArrayList<File> filelist2 = new ArrayList<>();
hb = new HBox();
for (File file1 : filelist1) {
filelist2.add(file1);
}
System.out.println(filelist2.size());
for (int i = 0; i < filelist2.size(); i++) {
System.out.println(filelist2.get(i).getName());
image = new Image(filelist2.get(i).toURI().toString());
pic = new ImageView();
pic.setFitWidth(130);
pic.setFitHeight(130);
gridpane.setPadding(new Insets(5));
gridpane.setHgap(5);
gridpane.setVgap(5);
pic.setImage(image);
hb.getChildren().add(pic);
}
答案 0 :(得分:0)
将项目添加到GridPane
有点不同。
<强> From the Docs 强>
要使用GridPane,应用程序需要设置布局 对孩子的约束并将这些孩子添加到网格窗格中 实例。使用静态setter在子项上设置约束 GridPane类上的方法
应用程序也可以使用组合这些步骤的便捷方法 设置约束和添加子项
因此,在您的示例中,您首先需要决定:我需要在一行中包含多少张图片?
让我们说你的答案是 4 ,然后你的代码变成:(有一些差异方法,我写下最简单的一个。你可以使用任何东西,循环用于行和列是一个好的选择;) )
//Can be set once, no need to keep them inside loop
gridpane.setPadding(new Insets(5));
gridpane.setHgap(5);
gridpane.setVgap(5);
//Declaring variables for Row Count and Column Count
int imageCol = 0;
int imageRow = 0;
for (int i = 0; i < filelist2.size(); i++) {
System.out.println(filelist2.get(i).getName());
image = new Image(filelist2.get(i).toURI().toString());
pic = new ImageView();
pic.setFitWidth(130);
pic.setFitHeight(130);
pic.setImage(image);
hb.add(pic, imageCol, imageRow );
imageCol++;
// To check if all the 4 images of a row are completed
if(imageCol > 3){
// Reset Column
imageCol=0;
// Next Row
imageRow++;
}
}