2016-12-01 219 views
0
這裏

JavaFX的新手,我試圖動態創建GridPane,到目前爲止,我能夠創建指定以下:JavaFX的GridPane添加元素動態

GridPane gridPaneMain = new GridPane(); 

      gridPaneMain.add(button1, 0, 0, 1, 1); 
      gridPaneMain.add(button2, 1, 0, 1, 1); 
      gridPaneMain.add(button3, 2, 0, 1, 1); 
      gridPaneMain.add(button4, 3, 0, 1, 1); 
      gridPaneMain.add(button5, 4, 0, 1, 1); 
      gridPaneMain.add(button6, 5, 0, 1, 1); 
      gridPaneMain.add(button7, 6, 0, 1, 1); 
      Scene scene = new Scene(gridPaneMain, 800, 800); 

      ImageView imv1 = new ImageView(); 
      ImageView imv2 = new ImageView(); 
      ImageView imv3 = new ImageView(); 
      ImageView imv4 = new ImageView(); 
      ImageView imv5 = new ImageView(); 
      ImageView imv6 = new ImageView(); 
      ImageView imv7 = new ImageView(); 

      Image image1 = new Image(BoardGameMain.class.getResourceAsStream("viewcontrollers/blank.png")); 
      imv1.setImage(image1); 
      imv2.setImage(image1); 
      imv3.setImage(image1); 
      imv4.setImage(image1); 
      imv5.setImage(image1); 
      imv6.setImage(image1); 
      imv7.setImage(image1); 

      final HBox pictureRegion1 = new HBox(); 
      final HBox pictureRegion2 = new HBox(); 
      final HBox pictureRegion3 = new HBox(); 
      final HBox pictureRegion4 = new HBox(); 
      final HBox pictureRegion5 = new HBox(); 
      final HBox pictureRegion6 = new HBox(); 
      final HBox pictureRegion7 = new HBox(); 

      pictureRegion1.getChildren().add(imv1); 
      pictureRegion2.getChildren().add(imv2); 
      pictureRegion3.getChildren().add(imv3); 
      pictureRegion4.getChildren().add(imv4); 
      pictureRegion5.getChildren().add(imv5); 
      pictureRegion6.getChildren().add(imv6); 
      pictureRegion7.getChildren().add(imv7); 

      gridPaneMain.add(pictureRegion1, 0, 1); 
      gridPaneMain.add(pictureRegion2, 1, 1); 
      gridPaneMain.add(pictureRegion3, 2, 1); 
      gridPaneMain.add(pictureRegion4, 3, 1); 
      gridPaneMain.add(pictureRegion5, 4, 1); 
      gridPaneMain.add(pictureRegion6, 5, 1); 
      gridPaneMain.add(pictureRegion7, 6, 1); 

任何建議如何動態無創建指定每個元素?

謝謝

回答

1

使用for循環?

GridPane gridPaneMain = new GridPane(); 
Image image = new Image(
      BoardGameMain.class.getResourceAsStream("viewcontrollers/blank.png")); 
for (int x = 0; x <= 6; ++x) { 
    Button button = ...; 
    gridPaneMain.add(button, x, 0, 1, 1); 
    ImageView imv = new ImageView(); 
    imv.setImage(image); 
    final HBox pictureRegion = new HBox(); 
    pictureRegion.getChildren().add(imv); 
    gridPaneMain.add(pictureRegion, x, 1); 
} 
Scene scene = new Scene(gridPaneMain, 800, 800); 
+0

Urgh ...正在載入每一次'ImageView'相同的圖像,雖然你知道這是與他們所使用的相同... – fabian

+1

我真的只是複製粘貼給定的代碼,並去除多餘的元素,以使其看起來對用戶最爲熟悉。我同意它可以得到改進,但重要的是要了解如何「動態添加元素」。 – Ironcache