2015-12-22 21 views
1

這是通過從google拍攝兩張圖片來生成checkboard的代碼,但是當我運行它時,它會告訴我多個Exception。我不知道我做錯了什麼,因爲沒有語法錯誤,有邏輯錯誤。checkboard javafx邏輯錯誤

import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.image.ImageView; 
import javafx.scene.layout.GridPane; 
import javafx.stage.Stage; 


public class CheckBoard extends Application{ 

    public void start(Stage primaryStage) { 

     ImageView imag = new  ImageView("https://c1.staticflickr.com/5/ 
     4034/4544827697_6f73866999_b.jpg"); 
     ImageView imag1 = new   ImageView("https://upload. 
     wikimedia.org/wikipedia/commons/thumb/2/25/Red.svg/2000px-Red.svg.png"); 
     GridPane pane = new GridPane(); 
     imag1.setFitHeight(50); 
     imag1.setFitWidth(50); 
     imag.setFitHeight(50); 
     imag.setFitWidth(50); 

     for(int i=0;i<8;i++) 
     { 
      for(int j=0;j<8;j++) 
      { 
       if(j%2==0) pane.add(imag, i, j); 
       else pane.add(imag1, i, j); 
      } 
     } 

     Scene scene= new Scene(pane,600,600); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 


} 
+0

有什麼例外? –

回答

0

你越來越像例外以下

... 
Caused by: java.lang.IllegalArgumentException: Children: duplicate children added: parent = Grid hgap=0.0, vgap=0.0, alignment=TOP_LEFT 
    at javafx.scene.Parent$2.onProposedChange(Unknown Source) 
... 

,因爲你不能添加Node(你ImageView)到多個父。您需要加載圖像,然後對每個細胞創建單獨ImageViews

... 
public void start(Stage primaryStage) { 

    Image image = new Image("https://c1.staticflickr.com/5/4034/4544827697_6f73866999_b.jpg"); 
    Image image1 = new Image("https://upload.wikimedia.org/wikipedia/commons/thumb/2/25/Red.svg/2000px-Red.svg.png"); 

    GridPane pane = new GridPane(); 
    for(int i=0; i<8; i++) { 
     for(int j=0; j<8; j++){ 
      ImageView view; 
      if(j % 2 == 0) { 
       view = new ImageView(image); 
      } 
      else { 
       view = new ImageView(image1); 
      } 

      view.setFitHeight(50); 
      view.setFitWidth(50); 
      pane.add(view, i, j); 
     } 
    } 
} 
... 

在一個側面說明,您使用的圖像似乎被讀取,只有黑色方塊 - 我假設你想使用不同的圖像你的實際應用程序,但如果你真的想要使用彩色矩形,你可能會更好使用Rectangle而不是Image