我写了一些代码,如下所示,试图显示20个图像的数组,但只显示最后一个图像。我很困惑,期待着你的帮助!
String []img={"a.png","b.png","c.png"...20 more};
for(int x=0;x<20;x++)
{
images[x]=new Image(img[x]);
views[x]=new ImageView(images[x]);
//put the images in the buttons on GridPane
for(int i=0;i<4;i++){//row
for(int j=0;j<5;j++){//column
buttons[5*i+j]=new Button();
buttons[5*i+j].setGraphic(new ImageView(images[x]));
gridPane.add(buttons[5*i+j], j, i);
buttons[5*i+j].setPrefHeight(120);
buttons[5*i+j].setPrefWidth(120);
}
}
}
答案 0 :(得分:0)
您将所有三个循环嵌套在一起。所以,在伪代码中:
for each of the 20 images:
for each row:
for each column:
create a button showing the image in the row/column
或等同于:
for each of the 20 images:
for each cell:
create a button showing the image in the cell
因此,在最外层循环的第一次迭代中,您使用按钮填充网格,所有按钮都显示第一个图像。在最外层循环的第二次迭代中,使用按钮填充网格,每个按钮显示第二个图像。等等。
因此,网格中的每个单元格都有20个按钮:所有单元格都将放在彼此的顶部,只有最后添加的单元格才会显示。
每个单元格中只需要一个按钮:
String[] img = {"a.png","b.png","c.png" /*...20 in totalv*/};
for(int x = 0 ; x < 20 ; x++) {
images[x]=new Image(img[x]);
views[x]=new ImageView(images[x]);
}
//put the images in the buttons on GridPane
for(int i = 0 ; i < 4 ; i++) { //row
for(int j = 0 ; j < 5 ; j++ ) { //column
int index = 5 * i + j
buttons[index]=new Button();
buttons[index].setGraphic(views[index]);
gridPane.add(buttons[index], j, i);
buttons[index].setPrefHeight(120);
buttons[index].setPrefWidth(120);
}
}