2017-04-19 52 views
0

我寫了一些代碼像下面試圖顯示一個20圖像的數組,但只得到最後一個圖像顯示。我很困惑,期待你的幫助!使用for循環唯一diaplays最後的圖像

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

您將所有三個循環嵌套在一起。所以,在僞代碼:

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); 
    } 
} 
+0

你這麼cooool! – Yong